2010-06-23 59 views
3

我用這條線來搜索與鏈接的文本中的名稱。替換文本中的單詞忽略網址

$name = "xxx"; 
$text = "my name is xxx en my website is http://xxx.something.com"; 
$text = preg_replace("/\b(".preg_quote($name, "/").")\b/i", $url, $text); 

我怎樣才能改變這個正則表達式來忽略文本網址

回答

0

你正在尋找不完全是對,但可能是這樣的幫助:

更換xxxyyy當且僅當xxx由空格,或者如果它是在字符串的開頭或結尾包圍。

<? 
$name = "xxx"; 
$text = "xxx my name is xxx en my website xxx is http://xxx.something.com xxx"; 
$text = preg_replace("%(?<=^|)".$name."(?= |$)%i", "yyy", $text); 
echo $text."\n"; 
//yyy my name is yyy en my website yyy is http://xxx.something.com yyy 
?> 

如果PHP支持可變長度後面的斷言,會更容易;因爲那樣我們可以使用更準確的(?<!http://[^ ]+)\bxxx\b