2013-11-25 84 views
0

我面臨一個問題,在字符串中搜索單詞並將它們轉換爲鏈接。如何進行搜索,將包含「 - 」的單詞視爲整個單詞而不是以「 - 」分隔的2個單詞?PHP preg_replace:匹配包含破折號的單詞

這裏是一個例子,如果我搜索單詞「窮舉」,我的搜索功能也將匹配單詞「非窮舉」的部分,雖然我不希望這個單詞匹配。

$string = "Bla bla bla non-exhaustive blabla bla exhaustive"; 
$words = array('exhaustive','non-exhaustive'); 
foreach ($words as $word) { 
    $string = preg_replace('/\b'.$word.'\b/i', '<a href=#>'.$word.'</a>',$string); 
} 

echo $string; 

結果:

唧唧歪歪非詳盡布拉布拉BLA 詳盡

非常感謝您的幫助!

+2

可以明確地防止連字符:''/ \ B [^ \ - ] '。$ word。'\ b/i'' –

回答

1
$string = preg_replace('/\b[^\-]' . preg_quote($word) . '\b/i', '<a href=#>' . $word . '</a>',$string); 

應該做的伎倆:)

*編輯,阿萊克斯也打不過我只用2秒:P

+0

在'$ word'上使用['preg_quote'](http://www.php.net/preg_quote),我會讓你滿意。 :) – h2ooooooo

+0

謝謝你的工作太棒了! – ZaDav

+0

@ h2ooooooo感謝您的提示! –

相關問題