Регулярные выражения
благодарю isms.ru
начал видоизменять твоё и в итоге дошёл до:
$str = ereg_replace("\#[a-fA-F0-9]{6}","<font color=\\0>", $str);
правда и условия задачки немного поменял, но главное работает
начал видоизменять твоё и в итоге дошёл до:
$str = ereg_replace("\#[a-fA-F0-9]{6}","<font color=\\0>", $str);
правда и условия задачки немного поменял, но главное работает
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
Тут подробно на пальцах объясняется что да как, главное один раз понять и отпрактиковать их, чтобы запомнить то что понял и потом легко писать
Очень советую, тем более что работают они быстро
Если уже понял, как они в принципе работают, то вот
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
Тут подробно на пальцах объясняется что да как, главное один раз понять и отпрактиковать их, чтобы запомнить то что понял и потом легко писать

Конкретно в этом случае можно даже на Паскале без регулярных выражений обойтись
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;
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;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Регекспы самодокументируемы. Если используется preg_replace, то сразу понятно что идет замена по шаблону. Разбираться в тупых преобразованиях строк, которые наворотил тупой студент совершенно несподручно.Хыиуду писал(а):Конкретно в этом случае можно даже на Паскале без регулярных выражений обойтись
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;
Кроме того, реuексповый код написан не на перле/ПХП, а на C.
2B OR NOT(2B) = FF
Про документацию и удобство разбора - это уже дело десятое. Я сейчас имел в виду вот это:
Как показывает практика - не единственныйAbsurd писал(а):проверка строк на соответствие шаблону не исчерпывается email и url'ами. И регулярные выражения - это единственно допустимый способ это делать. С заменой - тоже самое.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Нет, документация и мэйтенанс кода - это дело первое. Даже важнее написания.Хыиуду писал(а):Про документацию и удобство разбора - это уже дело десятое. Я сейчас имел в виду вот это:
#Цензоред# такую практику. Надо проверить строку - берем регексп. Надо заменить по шаблону - берем регексп. Все.Хыиуду писал(а): Как показывает практика - не единственный
2B OR NOT(2B) = FF
Согласиться не соглашусь, но спорить не буду, ибо флуд. Все.Absurd писал(а):Нет, документация и мэйтенанс кода - это дело первое. Даже важнее написания.
#Цензоред# такую практику. Надо проверить строку - берем регексп. Надо заменить по шаблону - берем регексп. Все.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Если есть регекспы - юзай их.
Вот это надо взять за правило.
Тут встала задачка: есть БД, из которой формируются сообщения форума. Есть массив ключевых слов. Надо при выводе форума слова, которые ключевые заменять ссылками.
это делается 1 строкой (93 символа) при этом оптимизации нет.
Вот это надо взять за правило.
Тут встала задачка: есть БД, из которой формируются сообщения форума. Есть массив ключевых слов. Надо при выводе форума слова, которые ключевые заменять ссылками.
это делается 1 строкой (93 символа) при этом оптимизации нет.