2010-06-23 38 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