2011-07-16 59 views
1

如何過濾phrase使用php?任何人都可以給我一個函數調用?php過濾短語

例如,如果我想這個「從一個句子There are no user contributed notes for this page.

所以過濾那句「不」」這句話就像回報感謝There are user contributed notes for page.

<?php 
function filterBadWords($str) 
{ 
    $badwords = array('no','this'); 
    $replacements = " "; 
    foreach ($badwords AS $badword) 
    { 
      $str = eregi_replace($badword, str_repeat(' ', strlen($badword)), $str); 
    } 
    return $str; 
} 

$string = "There are user contributed notes for page."; 
print filterBadWords($string); // this will filter `no` from `notes` 
?> 

回答

2
$text = preg_replace('/\b(?:no|this)\b ?/i', '', $text); 

編輯:

現在,它消除了一個空間,如果它發現一個單詞後,讓你不連續兩個空格結束。

$text = 'There are no user contributed notes for this page.'; 
$text = preg_replace('/\b(?:no|this)\b ?/i', '', $text); 
echo $text; 

輸出:有用戶提供的頁面註釋。

更新

如果你想使用一個數組,使其更易於管理過濾的話,你可以這樣做:

function filterWords($string){ 
    $bad_words = array('no', 'this'); 
    return preg_replace('/\b(?:'.implode('|', $bad_words).')\b ?/i', '', $string); 
} 

echo filterWords('There are no user contributed notes for this page.'); 
+0

很大,非常感謝許多。 –

0

使用str_replace

str_replace(array('no', 'this'), '', $text); 
+0

'echo str_replace(array('no','this'),'','沒有用戶爲本頁貢獻的註釋'); //有頁面的用戶貢獻tes。 '總是打破'筆記'併成爲'tes' –