|
|
|
|
|
для: big-trot
(17.04.2010 в 18:17)
| | тема живёт :)
ваш вариант работает, но есть один момент: как мне в replacement.перед и после функции trim добавить еще произвольный текст?
что-то типа
<?php
$text = preg_replace("#start((?:(?!end).)*)end#ie", "какойто-текст trim('$1') и еще текст", $text);
|
пробовал извращаться по-разному с кавычками, но что-то как-то не удавось. спасибо
p.s я понимаю что там eval, но все-таки может есть какие-нибудь варианты... | |
|
|
|
|
|
|
|
для: baston
(17.04.2010 в 10:56)
| |
// в общем есть текст
$text = "start любой текст end start опять текст end";
// и есть регулярка которая вырезает и изменяет текст между start и end
$text = preg_replace("#start((?:(?!end).)*)end#ie", "trim('$1')", $text);
|
| |
|
|
|
|
|
|
|
для: baston
(17.04.2010 в 08:40)
| | Например, так:
<?php
$text = "start любой у текст е end. start опять 1, текст entropy end";
$result = array(); //массив с результатами
//Вспомогательные переменные
$start = 0;
$pos2 = 1;
//Начинаем цикл
while($pos2) //пока истинно лог.выражение
{
//Начало искомого текста
$pos1 = mb_strpos($text, "start", $start);
//Конец искомого текста
$pos2 = mb_strpos($text, "end", $pos1);
//Задаем условия, при которых продолжаем вытаскивать искомый текст
if(($pos1 > 0 && $pos2 > 0 && $start > 0) ||
($pos1 >= 0 && $pos2 > 0 && $start == 0))
{
//Заносим найденный текст в массив
$result[] = trim(mb_substr($text, $pos1 + 5, $pos2 - $pos1 - 5));
$start = $pos2 + 3;
}
else
{
//Выходим из цикла
break;
}
}
echo "<pre>";
print_r($result);
echo "</pre>";
|
| |
|
|
|
|
|
|
|
для: big-trot
(16.04.2010 в 22:26)
| | верно, не найдет. Значит, автору вопроса надо еще подумать над выражением или же воспользоваться стандартными функциями PHP. | |
|
|
|
|
|
|
|
для: big-trot
(16.04.2010 в 22:26)
| | Моих рег.выражений тут нет. | |
|
|
|
|
|
|
|
для: neadekvat
(16.04.2010 в 21:38)
| | Интересно, а такую строку ваше выражение найдет?
"start любой e текст end start опять e текст end" | |
|
|
|
|
|
|
|
для: Trianon
(16.04.2010 в 20:11)
| | Все гениальное - просто. Спасибо =) | |
|
|
|
|
|
|
|
для: neadekvat
(16.04.2010 в 20:04)
| | Вы попробуйте preg_replace/e на примерах из мануала, постепенно усложняя задачу.
Оно поддастся наверняка. Потом усложните задачу. Еще усложните. Всё будет.
Потом попробуйте инъекцию учинить. :) | |
|
|
|
|
|
|
|
для: Trianon
(16.04.2010 в 19:54)
| | Я тут подумал - а ведь ничего из ваших слов не понял | |
|
|
|
|
|
|
|
для: neadekvat
(16.04.2010 в 19:44)
| | Отож
Наивысшая веселость там заключается в том, что тело литерала оторвано от его "кавычного" обрамления.
Ну и еще в том, что областью видимости является функция, из которой выполнен вызов preg_replace.
Что иногда неслабо так спасает. | |
|
|
|
|