我用这条线来搜索与链接的文本中的名称。替换文本中的单词忽略网址
$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);
我怎样才能改变这个正则表达式来忽略文本网址
我用这条线来搜索与链接的文本中的名称。替换文本中的单词忽略网址
$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);
我怎样才能改变这个正则表达式来忽略文本网址
1)您可以使用正则表达式查找所有的URL(例如,http://snipplr.com/view/2371/regex-regular-expression-to-match-a-url/) - 记住它们的位置和长度
2 )使用正则表达式来找到一个词的所有OCCURENCES还记得位置和长度
3)经过2个结果),并检查这个词是不是在URL中。
你正在寻找不完全是对,但可能是这样的帮助:
更换xxx
与yyy
当且仅当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