|
|
|
| сейчас имею вот что:
preg_match_all('/<a[^\'\"]+?href=\"(http:\/\/[^\"\']*?)\".*?>(.*?)<\/a>/',$site,$links);
|
подскажите пожалуйста как улучшить? мне нужно чтобы внутри адреса ссылки не встречалось имя домена (чтобы ссылка обязательно вела на другой домен) а в тексте ссылки не было тега <img>
заранее очень благодарен! | |
|
|
|
|
|
|
|
для: Freeb00ter
(23.10.2007 в 22:45)
| | Я бы делал в несколько этапов. Сначала выбирал из текста ссылки. Потом удалял те из них, где есть имя домена нужного. Потом убивал бы те, в тексте которых есть картинка. А потом выбирал бы урлы из оставшихся. | |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|
|
|
|
|
для: EXP
(24.10.2007 в 13:17)
| | (?(2)|эээээ) - это зачем? :) | |
|
|
|
|
|
|
|
для: kasmanaft
(24.10.2007 в 13:41)
| | на всякий случай . >:-|
а вдруг захотят ещё впаритьссылку <a href=http://site5.ru></a>
:) | |
|
|
|