Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> замена с регулярными выражениями preg_replace() 
:(
    Опции темы
Solid
  Дата 3.11.2003, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

Репутация: нет
Всего: нет



Есть маленькая, и в то же время, на первый взгляд, не разрешимая проблемка. Всё дело в регулярном выражении, а именно c функцией preg_replace()... Так что зарание прошу тех, кто плохо разбирается в регулярках, ничего не говорить, или советовать.

Есть данные, вида:

Код
|03.11.02| <me> У меня есть предположение что это так называемый <текст> несколько не относится сюда
|03.11.03| <you> этот такой же, но он менее идееспособный.


Например, запишем эти данные в переменную $string;
Нужно обработать эту переменную при помощи регулярного выражения, что бы в последствие данные имели вид:

Код
|03.11.02| <font color=blue>me</font> У меня есть предположение что это так называемый <текст> несколько не относится сюда
|03.11.03| <font color=blue>you</font> этот такой же, но он менее идееспособный, <а это баг>


На это дело я сочинил следующий код:

Код
$string = preg_replace("/(^\|[0-9]{2}\.[0-9]{2}\.[0-9]{2}\|)[[:space:]]\<(.*)\>[[:space:]](.*$)/m", " <font color=blue></font> ", $string);


и, к моему большому сожалению, в нём есть один баг. Видете в первой строчке me, да? и в конце стоит <текст>, так вот, реплэйс почему-то происходит до последней ">", а не до самой первой.

В общем есть вопрос, как сделать так, что бы было правильно, как я описал?

%)

Это сообщение отредактировал(а) Solid - 3.11.2003, 23:33
PM MAIL WWW ICQ   Вверх
Secandr
Дата 3.11.2003, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



А если поставить не .* а [^\<]*
и всё получится smile.gif
P.S. Жадность алгоритма.
P.P.S. Правда может \ ненужен

Это сообщение отредактировал(а) Secandr - 3.11.2003, 21:37


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Solid
Дата 3.11.2003, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

Репутация: нет
Всего: нет



Secandr:
Большое спасибо.

Здесь всё конечно правильно, но у меня возникла ещё одна подковырка. В ХТМЛ символ "<" обозначается как "&lt;". Значит мне нужно вставить не [^\<], а "&lt;", но если вставить [^\&lt\;] то получится, что мы будем проверять каждый символ, и если например между <> будет отдельный &, l, t или ;, то, само собой, регулярное выражение нефига не заменит.

Вопрос: как сделать регулярное выражение целостным? Из вышеобъяснённого всё должно быть понятно, вроде.
PM MAIL WWW ICQ   Вверх
Secandr
Дата 4.11.2003, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



попробуй [^(\&lt\;)]
Правда я такого не делал.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Solid
Дата 4.11.2003, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

Репутация: нет
Всего: нет



Пожалуйста удалите две предыдущущие записи.

Secandr: хехе, у меня идентичное мышление с тобой. Я точно так же попробовал, но вот не сработало. Это абсолютно некакой разницы не имеет с тем, что я предлагал в предыдущем посте.

Может быть всётаки есть какие-нибудь другие версии? Я даже не поленюсь их опробовать.
PM MAIL WWW ICQ   Вверх
Secandr
Дата 5.11.2003, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Есть бредовое предложение: поменять все "&lt;" обратно на "<" smile.gif

А потом вернуть "&lt;" smile.gif
Хотя это должно работать по другому.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Solid
Дата 7.11.2003, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

Репутация: нет
Всего: нет



Secandr: насамом деле бредовое. Мне бы что попроще ;)
PM MAIL WWW ICQ   Вверх
Solid
Дата 7.11.2003, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

Репутация: нет
Всего: нет



OFFTOPIC: сделайте удаление собственных сообщений в форуме, а так же удалите 2 предыдущих (гостевых) сообщения.

Это сообщение отредактировал(а) Solid - 7.11.2003, 00:52
PM MAIL WWW ICQ   Вверх
Secandr
Дата 7.11.2003, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Solid Идея, то бредовая, но иногда прокатывает.
У меня почемуто .* иногда не работает, так приходится делать [^\r]* smile.gifsmile.gifsmile.gif

Есть тут люди знающие регулярные выраженияconfused.gif??


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0995 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.