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

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

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

 

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

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

тема: Проверка ссылки. Внутреняя или внешняя.
 
 автор: nax   (26.11.2007 в 15:10)   письмо автору
 
 

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

*http://mysite.ff
*http://site.ru
*http://difsite.fk
*news/index.php?бла=блаблабла
*mailto:admin@true.vom
*guestbook

все внутренние ссылки сайта http://site.ru. Тоесть из вышеприведённого списка условию соответствует:

**http://site.ru
**news/index.php?бла=блаблабла
**guestbook

Делаю поиск. Если не делать такой проверки, под поиск попадут не конкретный сайт, а почти все сайты мира по принципу домино :)
Спасибо!

   
 
 автор: Faraon   (26.11.2007 в 16:17)   письмо автору
 
   для: nax   (26.11.2007 в 15:10)
 

Типа такого

<pre>
<?
$t
="*http://mysite.ff
*http://site.ru
*http://difsite.fk
*news/index.php?бла=блаблабла
*mailto:admin@true.vom
*guestbook"
;

$r=preg_replace("#(http://[^site\.ru]|mailto:).+?\n#is","",$t);
print 
str_replace("*","",$r);
?>

   
 
 автор: nax   (26.11.2007 в 17:52)   письмо автору
 
   для: Faraon   (26.11.2007 в 16:17)
 

Неправильно вопрос я сформулировал. Но ваш вариант переделал, работает, спасибо большое!!

   
 
 автор: kasmanaft   (26.11.2007 в 18:02)   письмо автору
 
   для: Faraon   (26.11.2007 в 16:17)
 

[^site\.ru] - значит не "не site.ru", а "не какая_либо_из_перечисленных_букв"...
Соответственно правильно работать это не может.
Ну а вместо \n, надо было, наверное, поставить \s или хотя бы пробел.

str_replace("*","",$r) - заменит все звездочки.. в том числе из относительных урлов. Почему бы не внести ее в рег. выражение?

   
 
 автор: Faraon   (26.11.2007 в 20:44)   письмо автору
 
   для: kasmanaft   (26.11.2007 в 18:02)
 

Да не вопрос, думал очень быстро, работы много :)
Насчет \n можно было как вы сказали, но я решил так :)
А насчет звездочек, я предположил, что автору их надо было тоже убрать

   
Rambler's Top100
вверх

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