我用這條線來搜索與鏈接的文本中的名稱。替換文本中的單詞忽略網址
$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