Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: @flaers
 
 автор: flaers   (07.02.2010 в 10:53)   письмо автору
 
 

найти в тексте слово, начинающееся на @ и состоящее из разных символов. далее заменить на ссылку с этим же именем

  Ответить  
 
 автор: flaers   (07.02.2010 в 14:22)   письмо автору
 
   для: flaers   (07.02.2010 в 10:53)
 

есть идеи?

к примеру есть текст:

привет @flaers !

отсюда выделить @flaers и записать его в виде ссылки типа <a href='flaers'>@flaers</a>

спрашиваю так как никак не могу осилить регуляторные выражения

  Ответить  
 
 автор: Trianon   (07.02.2010 в 15:28)   письмо автору
 
   для: flaers   (07.02.2010 в 14:22)
 

$text = " ... @flares ...";
$res = preg_replace("/\\@([\\S]+)/", "<a href='\\1'>\\1</a>", $text);

  Ответить  
 
 автор: Тень&   (07.02.2010 в 18:33)
 
   для: Trianon   (07.02.2010 в 15:28)
 

Что за чушь? (c)

Зачем Вы экранируете @? Кто будет апостроф экранировать?

  Ответить  
 
 автор: Trianon   (07.02.2010 в 19:37)   письмо автору
 
   для: Тень&   (07.02.2010 в 18:33)
 

Я уже как-то писал, что более мерзотным (по уровню неортогональности) ,чем RegExpressions, языком, считаю разве только язык perl, да еще может быть микропроцессорную архитектуру Intel.

Запоминать, какой из символов является специальным, а какой нет, в этом ключе - значительно выше моих сил.
Чем бесполезно (потому что никакой внутренней логики и красоты в семантике этого языка нет, а значит я все равно это забуду) тратить время на выяснение этого вопроса в мануале, я лучше заэкранирую любой подозрительный для меня символ.
И конечно же не стану попрекать этим других.

Апостроф? В шаблоне нет ни одного апострофа.
А в php-строке правила экранирования, к моему великому счастью, довольно прозрачны.
И нужды в неразумной избыточности - нет. Экранирование слэша перед единицей - избыточность разумная.
Надо ли дополнительно оговаривать, что это всё на мой взгляд?

  Ответить  
 
 автор: Тень&   (07.02.2010 в 19:40)
 
   для: Trianon   (07.02.2010 в 19:37)
 

Я имею ввиду HTML-экранирование

  Ответить  
 
 автор: Trianon   (07.02.2010 в 20:19)   письмо автору
 
   для: Тень&   (07.02.2010 в 19:40)
 

В URL открытых апострофов по идее попадаться не должно.
По хорошему, все должны быть за rawurlencode'ны

Да и htmlspecialchar'ить этот самый flaers нужно в двух местах, проще предположить, что кто-то эту операцию уже проделал за. Ровно там где надо.

  Ответить  
 
 автор: Тень&   (07.02.2010 в 20:24)   письмо автору
 
   для: Trianon   (07.02.2010 в 20:19)
 

> По хорошему, все должны быть за rawurlencode'ны
То есть Вы за автора домысливаете, что значения после "@" будут обязательно URL-кодированными? Из его примера это не видно.

> Да и htmlspecialchar'ить этот самый flaers нужно в двух местах, проще предположить, что кто-то эту операцию уже проделал за.
Я как-то тут похожий код размещал, Вы придрались именно так, как сейчас я. Я злопамятный :)

  Ответить  
 
 автор: Trianon   (07.02.2010 в 20:39)   письмо автору
 
   для: Тень&   (07.02.2010 в 20:24)
 

Значит, код был непохож.
Пред тем, как выполнять urlencode , сперва стоило бы решить вопрос с контекстом того что за @
Автор его тоже не оговорил.
Я выбрал - до первого пробела. Это куда более болезненный шаг.
Я б еще понял тапки в эту точку.

И последнее предупреждение.
Мне всё равно, злопамятный Вы или нет.
Но не всё равно - тролль ли.
При очередном намеке я просто внесу Вас в список. Свой личный.
И Никакого конструктивного диалога тогда у нас с Вами не выйдет.

  Ответить  
 
 автор: Тень&   (07.02.2010 в 20:45)   письмо автору
 
   для: Trianon   (07.02.2010 в 20:39)
 

Я просто сменю username, если мне вдруг понадобится Вас потроллить.

  Ответить  
 
 автор: Trianon   (07.02.2010 в 21:14)   письмо автору
 
   для: Тень&   (07.02.2010 в 20:45)
 

Ни на минуту не усомнюсь.
Но вот беда, новички у меня в другом списке :)

  Ответить  
 
 автор: .heed   (07.02.2010 в 21:17)
 
   для: Trianon   (07.02.2010 в 20:39)
 

>мерзотным (по уровню неортогональности) ,чем RegExpressions, языком, считаю разве только язык perl

было где-то в задворках сознания мысль, как-то назвать бОльшую смысловую нагрузку при меньшем колличестве символов, Но так я-бы точно не назвал :))

Кому-как , мне в RegExp более-менее просто всё запомнилось.
Во всяком случае там к каждым таким моментам достаточно простое и точное описание
, в отличии от тысячи трудновыговариваемых функций и констант php ,) кстати sql тоже не подарок

а в перл как мне кажется просто то что вместо if (1) func(param); записать func param if 1;
, и области видимости.
но тоже всяких классов целые кучи, хоть и понятнее там oop и просще.
но ооп я вот точно так-же и назвал :) а говорят что мол для лучшей возможности записи человеческой логики.

  Ответить  
 
 автор: Тень&   (07.02.2010 в 21:24)   письмо автору
 
   для: .heed   (07.02.2010 в 21:17)
 

Познакомся с MVC, паттернами проектирования, фреймворки типа Zend Framework, Kohana etc. Может изменишь своё мнение.

А PCRE просто упрощают жизнь в простых задачах. А в сложных задачах они превращают код в говно. Пример тому - Smarty.

  Ответить  
 
 автор: heed   (07.02.2010 в 23:01)   письмо автору
 
   для: Тень&   (07.02.2010 в 21:24)
 

Сложные задачи они просто сами по себе так решаемые, у меня только иногда бывает желание что-то сделать на более низком уровне чем regExp, потомучто иногда казалось-бы простые вещи решаются бывает только с его хитро-нелогичной логикой, а если поразмыслить на уровне байтов можно было-бы сделать просще.

Сейчас глянул краем глаза сейчас что такое MVC, и опять впечатление что почитал книгу бутча по c++ :)
мне кажется слишком сложным такое разделение "Модель-Вид-Контроллер", щаблонизаторы кажутся медленными, наверное просто в силу привычек, просто тянет сделать кучу функций

, единственное чем заманчиво, это упорядоченное разделение данных и кода более-менее соответственно задачам. Некие оболочки, в которые завёрнуты функции и данные, в которые лишний раз можно не заглядывать.
Но пока всётаки на другую модель склоняюсь, файлы с переменными , функциями и большими такими описаниями всего, чтобы не забыть.) Если выработать такой более-менее свой постоянный стиль, то бывает даже легче ориентироваться в таком, Только пока всё-равно всё-время приходится читать чего-там за параметры у меня в забытых функциях :)

А может-быть просто я не понял всех этих классов и интерфейсов потомучто так и не встречал ещё задачу где оправданно было-бы их использование , нужно наверное делать свой фрэймворк , одновременно в двух разных стилях, чтобы во всём этом разобраться.
Чужими пользоваться это нужно изучать их запоминать много байт :) я до сих пор не знаю как называются флаги-константы например для preg_match_all() пишу 1|2|4, или лезу в мануал и обнаруживаю там что offset пишется с двумя F :)

  Ответить  
 
 автор: Тень&   (07.02.2010 в 19:42)
 
   для: Trianon   (07.02.2010 в 19:37)
 

> Экранирование слэша перед единицей - избыточность разумная.
Я не спорю. Напротив -- поддерживаю.

  Ответить  
 
 автор: big-trot   (07.02.2010 в 22:21)   письмо автору
 
   для: Тень&   (07.02.2010 в 19:42)
 

Спор ни о чем. Предложенный вариант выражения работает.
Что еще надо. Стиль написания дело вкуса. Как говорится "на вкус и цвет товарищей нет".

  Ответить  
 
 автор: Тень&   (08.02.2010 в 00:34)   письмо автору
 
   для: big-trot   (07.02.2010 в 22:21)
 

Я спорил не с тобой :) Мы ищем совершенство, товарищ. А вот с позицией
> Предложенный вариант выражения работает. Что еще надо
не согласится даже Trianon, которого ты защищаешь :)

  Ответить  
 
 автор: flaers   (14.02.2010 в 00:12)   письмо автору
 
   для: Trianon   (07.02.2010 в 15:28)
 

к сожалению данная конструкция работает только если текст равен этому слову и всё( помогите сделать замену этого слова если оно находится в небольшом тексте и разделяется пробелами

  Ответить  
 
 автор: Trianon   (14.02.2010 в 00:26)   письмо автору
 
   для: flaers   (14.02.2010 в 00:12)
 

>к сожалению данная конструкция работает только если текст равен этому слову и всё(
>помогите сделать замену этого слова если оно находится в небольшом тексте и разделяется пробелами

Вообще-то я проверял пример, перед тем, как постить.
И теперь был вынужден потратить еще 10 минут на повторную проверку.

Тестовым входным потоком послужил полный текст этого топика.
Конструкция работает. Как пример. Выделяя фрагменты в том числе и среди такого текста.

Ничего другого, кроме как быть примером, ей в задачу не вменялось.

  Ответить  
 
 автор: flaers   (14.02.2010 в 11:31)   письмо автору
 
   для: Trianon   (14.02.2010 в 00:26)
 

может ли повлиять на работу этого скрипта выполнение функции htmlspecialchars() до поиска слова?

  Ответить  
 
 автор: Trianon   (14.02.2010 в 12:47)   письмо автору
 
   для: flaers   (14.02.2010 в 11:31)
 

в каком смысле?
В этом скрипте нет такой функции.

  Ответить  
 
 автор: flaers   (14.02.2010 в 17:20)   письмо автору
 
   для: Trianon   (14.02.2010 в 12:47)
 

здесь я не написал но обработчике текста то она присутствует

  Ответить  
 
 автор: Trianon   (14.02.2010 в 18:17)   письмо автору
 
   для: flaers   (14.02.2010 в 17:20)
 

тогда на входе уже совсем не тот текст, про который Вы спрашивали.

  Ответить  
 
 автор: flaers   (14.02.2010 в 18:36)   письмо автору
 
   для: Trianon   (14.02.2010 в 18:17)
 

ладно давайте начнём сначала, чтобы не запутать


первым делом вы должны из строки:
... @row ...
выбрать row и записать это значение в переменную

  Ответить  
 
 автор: Trianon   (14.02.2010 в 20:00)   письмо автору
 
   для: flaers   (14.02.2010 в 18:36)
 

>ладно давайте начнём сначала, чтобы не запутать

>первым делом вы должны

Пожалуй, на этой торжественной ноте мы и закончим.

  Ответить  
 
 автор: flaers   (14.02.2010 в 20:40)   письмо автору
 
   для: Trianon   (14.02.2010 в 20:00)
 

ну во-первых вы меня не правильно поняли.

значит вы не поможете человеку написать скрипт длинной в одну строку?

и мне придётся опять ждать несколько дней и клянчить у народа маленький скриптик?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования