[^\"]+)\")/"
], то вааще не пашет
([^"]+)(?:")/', $buffer, $ar);preg_match_all('/href="(?!mailto:[i])[/i]([^"]+)"/', $this->buffer, $ar, PREG_SET_ORDER);
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]+)[^>]*>/",$buf,$urls);// выдираем все ссылки
for ($c_urls=0;$c_urls<count(@$urls[1]);$c_urls++) {
echo $urls[1][$c_urls];// выводим на экран
}
Автор оригинала: Lexx918
теперь возникает другой вопрос:
а как быть с относительными ссылками? как грамотно "приклеить" к ним тот путь, который уже пройден от корня домена.
трудность возникает, если текущий каталог не есть корень сайта и имеет вид похожий на файл с расширением.
если путь был http://127.0.0.1/path/ и появилась ссылка типа
href="path2/", то я конечно её приклею, а если href="path.php?var=value" при том, что path.php не файл, а каталог!?
и что делать, если крайнего слеша нету вообще?
парсить URL тоже не выход :(
// Проверяем если ссылка на локальный документ (test.htm) приделываем ей изначальный урл ([url]http://server/test.htm[/url]) [BEGIN]
if (strtolower((substr($naid_url, 0, 7))!="http://")){
//_log("[+] ".$naid_url);
$razb_url=explode("/",$scan_url);
$curl=count($razb_url);
if (empty($razb_url[$curl-1])){
$naid_url=str_replace("/","",$naid_url);
$naid_url=$scan_url.$naid_url;
}else{
$g_url="";
for ($iz=0;$iz<$curl-1;$iz++){
$g_url=$g_url.$razb_url[$iz]."/";
}
$naid_url=$g_url.$naid_url;
}//end if (empty($nourl[$curl]-1))){
}///end if http
// Проверяем если ссылка на локальный документ (test.htm) приделываем ей изначальный урл ([url]http://server/test.htm[/url]) [END]

if (strtolower((substr($naid_url, 0, 7))!="http://")) {
<a href="vasya_pupkin" onmouseover="this.href='htt'+'p://'+'www.'+'serv'+'er.ru/'+'path/'">super_link</a>
fsockopen();
<?php
ob_start();
?>
<!--Много-много ссылок и текста-->
<?php
function preg_callback($matches) {
$link=$matches[2]; $s="0.";
for ($i=0; $i<15; $i++) {
$s=$s.rand(0,9);
};
if (strpos($link,"?")==0) {
$s="?rand=".$s;
} else {
$s="&rand=".$s;
};
$link=$link.$s;
return "href=\"$link\"";
};
function rnd_link($ctn){
$ctn=preg_replace_callback("#(href=\"?[(:?https?|ftp)://]*([a-z0-9+-=\\$\&\%\#\@\^*().,/)\];\'\\!?]*)\"?)#is","preg_callback",$ctn);
return $ctn;
};
//Обработка и вывод буфера
$ctn=ob_get_contents();
ob_end_clean();
$ctn=rnd_link($ctn);
echo $ctn;
?>
