2009-12-04 81 views
0

我使用這個代碼如何使workeable的<a href ..在PHP

$patterns = "!((http:/{2}[\w\.]{2,}[/\w\-\.\?\&\=\#]*)|(www\.[/\w\-\.\?\&\=\#]*)|([a-zA-Z0-9-\.]+(com|us|co.il)[^\s]*))!e"; 
return preg_replace($patterns, "'<a class=\"highlight boughtAt\" href=\"\\1\" title=\"\\1\" target=\"_blank\">'.(strlen('\\1')>=$chr_limit ? substr('\\1',0,$chr_limit).'$add':'\\1').'</a>'", $url); 

但我的問題是,如果我得到的www.或只是.com我得到在href =前綴我所在的域名。 我該如何避免它?只是得到一個工作鏈接?

由於提前, 羅伊

+2

請描述你在做什麼實際上試圖做。 – Joe 2009-12-04 14:18:47

+1

請提供3個可能的輸入和您期望提取的值的列表。例如'http://www.something.com/ => www.something.com' – 2009-12-04 14:26:07

+1

'/ {2}' - 爲什麼這麼複雜?爲什麼不只是'''? – Gumbo 2009-12-04 14:31:10

回答

0

您應該能夠使用向後斷言 - (?<=...)然後隨時添加到http://你的鏈接:

$patterns = "!(((?<=http:/{2})[\w\.]{2,}[/\w\-\.\?\&\=\#]*)|(www\.[/\w\-\.\?\&\=\#]*)|([a-zA-Z0-9-\.]+(com|us|co.il)[^\s]*))!e"; 
return preg_replace($patterns, "'<a class=\"highlight boughtAt\" href=\"http://\\1\" title=\"\\1\" target=\"_blank\">'.(strlen('\\1')>=$chr_limit ? substr('\\1',0,$chr_limit).'$add':'\\1').'</a>'", $url);