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

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

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

 

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

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

тема: что значаит # и #si
 
 автор: GRь)zLI   (30.08.2007 в 18:07)   письмо автору
 
 

вот хочу разобраться в этих иероглифах в Регулярных выражениях:)
что значит # и #si
и правильно ли я составил следующие выражение?
для поиска и замены URL на ссылки

<?php
$text
="texthttp://softtime.ru/forum/addthemeform.php?id_forum=6 text";
$text preg_replace('#http://([\w\/\.\?\&\=]*)#si','<a  target="_blank" href="\\1">\\1</a>',$text);
echo
"$text";
?>

спасибо

   
 
 автор: SHAman   (30.08.2007 в 18:35)   письмо автору
 
   для: GRь)zLI   (30.08.2007 в 18:07)
 

1) Есть тема про рег выражения
2) # в рег выражении ничего особого не значит. В данном случае - просто ограничитель регулярки. Это могло быть с тем же успехом, классическое /, @ или ~. Иногда использую !.
3) бекслеши избыточны. Внутри класса символов многие спецсимволы теряют свою специальность. ([\w/.?&=\#])+
Потому что * допускает, что вместо всего этого выражения может быть ничего, а + обозначает минимум - 1 символ. Хотя, можно ограничить минимум - 4 символа {4}. Кстати, если поиск нестрогий, то можно было просто
http://([^ ]+)
Так забираются в $1 все непробельные символы. Но зато не проверяется корректность урл...

ЗЫ. У вас не учитываются урлы с локаторами. http://url.ru/page.html?param=value&p=v#123
Добавьте в класс символов #. Если оставите ее в качестве ограничителя регулярки, то ее нужно отескейпить \#

   
 
 автор: GRь)zLI   (30.08.2007 в 19:12)   письмо автору
 
   для: SHAman   (30.08.2007 в 18:35)
 

И ещё вопрос, если есть BBCode:[url]. Как сделать, так что б предыдущее рег. Выражение
пропускало урлы в этих тегах?

   
 
 автор: SHAman   (31.08.2007 в 12:04)   письмо автору
 
   для: GRь)zLI   (30.08.2007 в 19:12)
 

Не понимаю вопроса. Нужно заменять просто урлы на ссылки, а внутри bbcode не трогать что-ли? Если так, то можно добавить просмотр назад
в начале регэкспа (?<![url\s*)

   
 
 автор: kasmanaft   (31.08.2007 в 12:11)   письмо автору
 
   для: SHAman   (31.08.2007 в 12:04)
 

Назад нельзя смотреть на неопределенную длину ;)
Это я про " * "

   
 
 автор: Loki   (31.08.2007 в 12:50)   письмо автору
 
   для: GRь)zLI   (30.08.2007 в 19:12)
 

Можно так:
(?:[^\]])и дальше ваша регулярка

   
Rambler's Top100
вверх

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