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

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

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

 

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

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

тема: ссылки
 
 автор: Shest   (06.12.2010 в 13:44)   письмо автору
 
 

Подскажите пожалуйста регулярное выражение типа <a всё_что угодно $_SERVER['SERVER_NAME'] всё что угодно>

  Ответить  
 
 автор: kosta_in_net   (07.12.2010 в 18:42)   письмо автору
 
   для: Shest   (06.12.2010 в 13:44)
 

'.*'.$_SERVER['SERVER_NAME'].'.*'

  Ответить  
 
 автор: neadekvat   (08.12.2010 в 13:19)   письмо автору
 
   для: kosta_in_net   (07.12.2010 в 18:42)
 

Для программиста Яндекса вы написали довольно странную регулярку.
Какой смысл ставить *, если они стоят в пре- и пост- позициии? Не проще ли просто напросто не ограничивать начало и конец строки и вообще использовать strpos?
Другое дело - не совсем ясно, надо ли, чтобы текст был именно в квадратных скобках (< >) или это просто так автор написал.

  Ответить  
 
 автор: Trianon   (08.12.2010 в 13:31)   письмо автору
 
   для: neadekvat   (08.12.2010 в 13:19)
 

чушь там для программиста любого уровня.
Поскольку preg_quote не применяется.
Даже если отойти от сугубо формального пути, и приводить вариант именно для server_name, стоило бы помнить, что доменное имя обычно включает в себя точки, и что точка - спецсимвол шаблона, а не обычный литерал.

А Константин где-то утверждал, что он программист Яндекса?

  Ответить  
 
 автор: neadekvat   (08.12.2010 в 13:41)   письмо автору
 
   для: Trianon   (08.12.2010 в 13:31)
 

Хм, правда, проблема еще глубже.

> А Константин где-то утверждал, что он программист Яндекса?
"Вообще-то, я работаю в Яндексе" - такого не было. Было это:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=77643&page=1#post460145
он пошутил, я пошутил :)

  Ответить  
 
 автор: Shest   (08.12.2010 в 22:10)   письмо автору
 
   для: Trianon   (08.12.2010 в 13:31)
 

В общем получилось следующее
<a[\s]*[\S]*href[\s]*=[\s]*(\"|\')?http:\/\/(www\.)?$_SERVER[SERVER_NAME](\"|\')?[\s]*[\S]*>[\s]*[\S]*<\/a>'i
Вот только одна проблема: выражение почему-то требует, чтобы адрес был с www, если сервер_наме без www, выржение не работает
Чудно. Вроде поставил (www\.)?

  Ответить  
 
 автор: Shest   (08.12.2010 в 22:39)   письмо автору
 
   для: Shest   (08.12.2010 в 22:10)
 

Всё, рзобрался. Решение такое
$host=str_replace("www.","",$_SERVER['SERVER_NAME']);
"'<a[\s]*[\S]*href[\s]*=[\s]*(\"|\')?http:\/\/(www\.)?$host(\"|\')?[\s]*[\S]*>[\s]*[\S]*<\/a>'i"

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

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