|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
Tommy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.7.2002 Репутация: нет Всего: нет |
Подскажите как получить текст между двумя наборами символов, и заменить
Пример: 11 текст текст текст текст текст текст 22 заменить, ну скажем на 22 текст текст текст текст текст текст 33 Вот так. |
|||
|
||||
crimaniak |
|
|||
Unregistered |
$result=preg_replace('/11(.*)22/s','22\\1\\x333',$text);
В данном случае пришлось записать первую тройку как \x33, чтобы отделить ее от back-reference \\1 |
|||
|
||||
Tommy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.7.2002 Репутация: нет Всего: нет |
Я только начал заниматься регулярнуми выражениями поэтомы у меня еще вопрос: Как, допустим, венуть строку до первого вхождения символа, ну скажем, 11. Если пишу .+11 то возвращапеть до последнего вхождения 11 а если .+?11 то пишет ошибку
|
|||
|
||||
crimaniak |
|
|||
Unregistered |
При работе регулярного выражения есть два режима - "жадный" и "не жадный", отличающиеся как раз тем, какую последовательность, подпадающую под маску, они находят. По умолчанию - жадный, поэтому оно и ищет до последнего 11. Тебе нужно поставить модификатор /U:
U (PCRE_UNGREEDY) This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by "?". It is not compatible with Perl. It can also be set by a (?U) modifier setting within the pattern. |
|||
|
||||
Tommy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.7.2002 Репутация: нет Всего: нет |
Я знаю но если я ставлю этот модификатор. то у меня вообще ничего не происходит, то есть никакой замены.
|
|||
|
||||
crimaniak |
|
|||
Unregistered |
Дальше дебажить надо. Путем перехода от простого выражения к более сложным.
|
|||
|
||||
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |