как да вкарам функция в preg_replace

  • Автор Автор 0u7
  • Начална дата Начална дата

0u7

Registered
имам функция която връща url

когато си я използвам get_url($url) си работи, но искам да я вкарам в preg_replace
Опитай така, но не работи някакви идеи ?
PHP:
$s = preg_replace('/<a target="_blank" href="(.*)" title="(.*)">(.*)/is', '<a target="_blank" href="$1" title="$2">$3 '.get_url("\\1").'',$s);
 
Може да го направиш като добавиш е отзад или да ползваш функцията http://php.net/manual/en/function.preg-replace-callback.php
 
Ползва се callback :)
Код:
function br2nl($matches)
	{    
    $text = preg_replace("/шаблона/","замяната",$matches[1]-масива); 
	}
	//Викане на функцията br2nl.
$text = preg_replace_callback("/\[code\](.+?)\[\/code\]/is","br2nl",$text);
 
0u7 каза:
Тва callback не мога го чатна нещо |(
Кое по-точно ? Слагаш си условието което търсиш да заменяш след което викаш функцията и го заменяш вътре като връщаш променливата :

Код:
function br2nl($matches - масив)
   {    
    $text = preg_replace("/шаблона/","замяната",$matches[1]-масива);
 return $text; // тук връщаш текста вече променен за по нататъчна обработка предполагам ме това си го забравил като ред  :) 
   }
   //Викане на функцията br2nl.
$text = preg_replace_callback("/Условието по което търсиш/is","br2nl - функцията ти като име", $text - съдържащата текст променлива);
 
Тва ми е preg-replace в който трябва да ползвам функцията.

$s = preg_replace('/<a target="_blank" href="(.*)" title="(.*)">(.*)/i', '<a target="_blank" href="\\1" title="\\2">\\3 '.get_url('\\1').'',$s);


функцията ми get_url


function get_dl($url){
$v = file_get_contents_curl($url);
$r = explode('LOCATION: ', $v);
$s = explode(" ", $r[1]);
$s = explode("\r\n",$s[0]);
if ($s[0]!="") {
$d = "http://site.com/".$s[0];
$vv = file_get_contents_curl($d);
$rr = explode('<div class="theme-content">', $vv);
$ss = explode("</div>", $rr[1]);
$ss = preg_replace("/<a href=\"(.*)\" onclick=\"target='_blank'\" rel=\"nofollow\">(.*)<\/a>/is", "<a target='_blank' href='\\1'><b>Изтегли</b></a></span>", $ss);
return $ss[0];
}
}

и ми връща линк за сваляне

callbacka как трябва да е нещо такова

$s = preg_replace_callback('/<a target="_blank" href="(.*)" title="(.*)">(.*)/i', 'get_dl',$s);
 

Back
Горе