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

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

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

 

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

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

тема: Помогите пожалуйста подправить выражение для выимки адресов ссылок с http:// и текстов ссылок с веб-странички
 
 автор: Freeb00ter   (23.10.2007 в 22:45)   письмо автору
 
 

сейчас имею вот что:

preg_match_all('/<a[^\'\"]+?href=\"(http:\/\/[^\"\']*?)\".*?>(.*?)<\/a>/',$site,$links);


подскажите пожалуйста как улучшить? мне нужно чтобы внутри адреса ссылки не встречалось имя домена (чтобы ссылка обязательно вела на другой домен) а в тексте ссылки не было тега <img>

заранее очень благодарен!

   
 
 автор: SHAman   (24.10.2007 в 12:40)   письмо автору
 
   для: Freeb00ter   (23.10.2007 в 22:45)
 

Я бы делал в несколько этапов. Сначала выбирал из текста ссылки. Потом удалял те из них, где есть имя домена нужного. Потом убивал бы те, в тексте которых есть картинка. А потом выбирал бы урлы из оставшихся.

   
 
 автор: EXP   (24.10.2007 в 13:17)   письмо автору
 
   для: Freeb00ter   (23.10.2007 в 22:45)
 

наверное можно ещё как-то так
<?php
$text 
'<a href="modules.php?name=name"></a><b><center>slovo</center></b>
    <a id="main" href="http://site.ru/">main</a></br>
    texttexttexrttexttext<a href="http://site2.ru/imgs/">imgs</a></br>
    texttext<a  class="dva" href="http://site2.ru/"><img src="img.gif"/></a></br>
    texttext<a href="http://site2.ru/foto/"> <img src="foto.gif"/> foto </a></br>
    exttext<a  class="tri" href=http://site3.ru/>and site3</a></br>
    texttext<a href="http://site4.ru/misc/foto/">other foto</a></br>
    <a id="main" href="http://site.ru/">main</a></br>....................'
;
    
preg_match_all(
"#(?:\<a [^\>]*href\=)\"?\'?http\:\/\/((?!site\.ru)[^ \>\"\']+)\"?\'?[^\>]*\>((?:(?!\<img [^\>]+\>|\<\/a\>).)+)?\<\/a\>(?(2)|эээээ)#si"
$text$out ,  PREG_PATTERN_ORDER );
    
 
var_dump($out);
?>

   
 
 автор: kasmanaft   (24.10.2007 в 13:41)   письмо автору
 
   для: EXP   (24.10.2007 в 13:17)
 

(?(2)|эээээ) - это зачем? :)

   
 
 автор: EXP   (24.10.2007 в 14:20)   письмо автору
 
   для: kasmanaft   (24.10.2007 в 13:41)
 

на всякий случай . >:-|
а вдруг захотят ещё впаритьссылку <a href=http://site5.ru></a>
:)

   
Rambler's Top100
вверх

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