Страница 2 из 2
Re: Регулярные выражения
Добавлено: 19 янв 2007, 13:17
pashtet
благодарю isms.ru
начал видоизменять твоё и в итоге дошёл до:
$str = ereg_replace("\#[a-fA-F0-9]{6}","<font color=\\0>", $str);
правда и условия задачки немного поменял, но главное работает
Re: Регулярные выражения
Добавлено: 19 янв 2007, 15:24
Absurd
Лучше используй Перловые регекспы из семейства preg_*. В данном случае - preg_replace().
Re: Регулярные выражения
Добавлено: 27 янв 2007, 07:21
Nikoshka
pashtet,
Если уже понял, как они в принципе работают, то вот
http://ru2.php.net/manual/ru/reference. ... syntax.php
http://ru2.php.net/manual/ru/reference. ... ifiers.php
Собственно не такие сложные. Если еще не понял, то почитай:
http://phpclub.ru/detail/article/regexp_1
http://phpclub.ru/detail/article/regexp_2
Тут подробно на пальцах объясняется что да как, главное один раз понять и отпрактиковать их, чтобы запомнить то что понял и потом легко писать

Очень советую, тем более что работают они быстро
Re: Регулярные выражения
Добавлено: 30 янв 2007, 12:46
Хыиуду
Конкретно в этом случае можно даже на Паскале без регулярных выражений обойтись
if pos('[c',s)<>0 and pos(']',s)=pos('[c',s)+8 then
begin
x:=pos('[c',s);
temp:=copy(s,x+2,6); //копируем 6 символов
delete(s,x,9); //Удаляем 9 символов, включая [c и ]
s:=insert('<font color=#'+temp+'>',s,x); //не уверен в правильности синтаксиса функции insert, но общий смысл именно такой
end;
Re: Регулярные выражения
Добавлено: 30 янв 2007, 13:50
Absurd
Хыиуду писал(а):Конкретно в этом случае можно даже на Паскале без регулярных выражений обойтись
if pos('[c',s)<>0 and pos(']',s)=pos('[c',s)+8 then
begin
x:=pos('[c',s);
temp:=copy(s,x+2,6); //копируем 6 символов
delete(s,x,9); //Удаляем 9 символов, включая [c и ]
s:=insert('<font color=#'+temp+'>',s,x); //не уверен в правильности синтаксиса функции insert, но общий смысл именно такой
end;
Регекспы самодокументируемы. Если используется preg_replace, то сразу понятно что идет замена по шаблону. Разбираться в тупых преобразованиях строк, которые наворотил тупой студент совершенно несподручно.
Кроме того, реuексповый код написан не на перле/ПХП, а на C.
Re: Регулярные выражения
Добавлено: 30 янв 2007, 15:16
Хыиуду
Про документацию и удобство разбора - это уже дело десятое. Я сейчас имел в виду вот это:
Absurd писал(а):проверка строк на соответствие шаблону не исчерпывается email и url'ами. И регулярные выражения - это единственно допустимый способ это делать. С заменой - тоже самое.
Как показывает практика - не единственный
Re: Регулярные выражения
Добавлено: 30 янв 2007, 15:32
Absurd
Хыиуду писал(а):Про документацию и удобство разбора - это уже дело десятое. Я сейчас имел в виду вот это:
Нет, документация и мэйтенанс кода - это дело первое. Даже важнее написания.
Хыиуду писал(а):
Как показывает практика - не единственный
#Цензоред# такую практику. Надо проверить строку - берем регексп. Надо заменить по шаблону - берем регексп. Все.
Re: Регулярные выражения
Добавлено: 30 янв 2007, 15:54
Хыиуду
Absurd писал(а):Нет, документация и мэйтенанс кода - это дело первое. Даже важнее написания.
#Цензоред# такую практику. Надо проверить строку - берем регексп. Надо заменить по шаблону - берем регексп. Все.
Согласиться не соглашусь, но спорить не буду, ибо флуд. Все.
Re: Регулярные выражения
Добавлено: 05 фев 2007, 10:14
isms.ru
Если есть регекспы - юзай их.
Вот это надо взять за правило.
Тут встала задачка: есть БД, из которой формируются сообщения форума. Есть массив ключевых слов. Надо при выводе форума слова, которые ключевые заменять ссылками.
это делается 1 строкой (93 символа) при этом оптимизации нет.