![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Vreden |
|
|||
![]() Idiotic Admin ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 12.7.2006 Репутация: нет Всего: 1 |
С обычными [ B ][ /B ] (пробелы для предотвращения обработки тегов форумом) и тому подобными тегами никаких проблем, конечно, не возникло. Но не могу обработать тег [ URL=http://google.ru ]Google[ /URL ]
Есть строка, с неизвестным количеством вхождений URL, то есть [ URL=* ]*[ /URL ] В конечном результате необходимо получить <a href="*" target="_blank">*</a> при каждом совпадении. Для начала, я пытался хотябы просто задать паттерн для [ URL=* ]*[ /URL ], но даже этого у меня не получилось.
Подскажите как и в какой последовательности реализовать задачу. -------------------- Чё? Как? © |
|||
|
||||
bars80080 |
|
||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ну ссылку, допустим я выбиваю так:
но для сложных поисков лучше использовать функцию:
где
|
||||||
|
|||||||
Vreden |
|
||||
![]() Idiotic Admin ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 12.7.2006 Репутация: нет Всего: 1 |
Интересный пример, но до конца не могу понять как это работает и нагуглить мануал по такой конструкции тоже неудалось. Подскажите, я так понимаю "\\1" это ссылка на первую конструкцию (.+) и соответственно \\2 на второю (.+)? Интересная особенность регулярных выражений, о которой я не имел представления. Как заставить это выражение замещать все вхождения в $text и работать с русскими символами. При наличии двух и более вхождений тегов [ URL ], все что находится после [/URL] пропадает, то есть часть строки после первого замещения исчезает. Это также при условии, что все символы латинские. При наличии русских символов preg_replace возвращает пустую строку. -------------------- Чё? Как? © |
||||
|
|||||
Vreden |
|
|||
![]() Idiotic Admin ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 12.7.2006 Репутация: нет Всего: 1 |
Обе проблемы решены, модификатор "u" заменен на модификатор "U"
-------------------- Чё? Как? © |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
модификатор "u" - для работы с utf-кодировками, если вы используете текст в cp1251, то его просто надо убрать
модификатор "U" - разрешение на жадность, если его поставить, то сколько бы ссылок не было в обрабатываемом тексте, вы получите всего одну большую ссылку, начинающуюся с первого [URL] и заканчивающегося последним [/URL] |
|||
|
||||
Vreden |
|
|||
![]() Idiotic Admin ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 12.7.2006 Репутация: нет Всего: 1 |
Смею предположить, что модификатор "U" делает выражение, наоборот, не жадным. http://on-line-teaching.com/php/regexp.htm http://www.shtogrin.com/library/web/pcre/doc/modificators/ У меня же без этого модификатора, как раз-таки при нескольких вхождениях тегов, остается один. С модификатором отрабатывает нормально. -------------------- Чё? Как? © |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |