2010-03-20 94 views
2
<?php 
    $a="php.net s earch for in the all php.net sites this mirror only function 
     list online documentation bug database Site News Archive All Changelogs 
     just pear.php.net just pecl.php.net just talks.php.net general mailing 
     list developer mailing list documentation mailing list What is PHP? PHP 
     is a widely-used..."; 
?> 

我想突出顯示特定的單詞。替換preg_replace中的字符串

例如phpnetfunc

php.net s earch for in the all **php**.**net** sites this mirror only **func**tion list online documentation bug database Site News Archive All Changelogs just pear.**php**.**net** just pecl.**php**.**net** just talks.php.net general mailing list developer mailing list documentation mailing list What is **PHP**? **PHP** is a widely-used...

由於提前。

+0

爲什麼第一個'php.net'是不突出? – kennytm 2010-03-20 13:05:47

+0

如果你想突出'php'短語和輸入是'php,PHP,php(123),php.net'應該被轉換爲'** php **,PHP,php(123),php.net或者** php **,** PHP **,php(123),php.net'或者甚至可以** ** php **,** PHP **,** php **(123),* * PHP **。net'? – Crozin 2010-03-20 13:12:24

+0

以及腳本如何處理整個單詞,如果它包含關鍵字?關鍵字「樂趣」,字符串 - 貓很有趣,結果 - 貓是*有趣*; – Simon 2010-03-20 16:37:06

回答

5

你可以做到以下幾點:

// your string. 
$str = "..............."; 

// list of keywords that need to be highlighted. 
$keywords = array('php','net','fun'); 

// iterate through the list. 
foreach($keywords as $keyword) { 

    // replace keyword with **keyword** 
    $str = preg_replace("/($keyword)/i","**$1**",$str); 
} 

上述命令將替換關鍵字,即使關鍵字是任何其他較大的字符串的子串。僅替換關鍵字作爲完整的單詞,你可以這樣做:

$str = preg_replace("/\b($keyword)\b/i","**$1**",$str); 
+0

嘗試在這樣的事情上使用這段代碼:'貓很有趣'。輸出結果是:'貓是**有趣** ny'。 – Crozin 2010-03-20 13:10:23

+1

是的,讓我們哼唱,而不是試圖改善答案。 codaddict只需要在'\ b'兩邊擁抱'($ keyword)',並且它將按預期工作。 – rjh 2010-03-20 13:11:42

+0

@Crozin:這就是OP想要的。即使關鍵字是任何更大的單詞的子字符串,他也想做替換。 – codaddict 2010-03-20 13:12:33

0
$words = 'php|net|func'; 

echo preg_replace("/($words)/i", '**$1**', $a); 
相關問題