1

このサイトの誰かが私にこれを示すまで、私は文字列から冒とく的な言葉を取り出そうとしていて、それができたと思っていました:http: //codepad.org/LMuhFH4g

それで、すべての宣誓の言葉がきれいになるまで、私が文字列を調べることができる方法はありますか?

$a = array( 'duck', 'chit', 'dsshole' ); 

$str = 'duchitck-you-dssduckhole'; 

$newString = str_ireplace($a,'',$str); 
$newString = str_ireplace('-','',$newString); 
$newString = trim($newString); 
echo $newString;  
4

5 に答える 5

12

簡単な解決策は、4 番目のオプションの $count パラメータを渡すことです。

do { 
    $str = str_ireplace(..., ..., ..., $count);
} while ($count); 

呪いの言葉を本当に取り除くには....それで頑張ってください。自然言語を完全にフィルタリングするにはバリエーションが多すぎます (word、werd、w0rd、w3rd など - 誰かが誰かをひどく呼びたい場合は、方法を見つけます。Web サイトは何らかの理由で節度を使用する傾向があります)。 .


ちなみに、このアプローチには実際の単語の概念がなく、単なる文字列 ( assassinate-> inate) があるため、基本的なものではありません。正規表現(便利な\b単語境界)を使用できますが、結局のところ、とにかくすべて無意味です

于 2013-01-02T06:25:53.303 に答える
0

この回答の「含む」機能を使用すると、次のことができます

$strFromSearchBox = 'duchitck you dssduckhole';
$theseWords = array('duck', 'chit', 'dsshole');

$newString = $strFromSearchBox;
while(contains($newString, $theseWords)) {
    $newString = str_replace($theseWords,'',$newString);
}

echo $newString;
于 2013-01-02T06:22:22.967 に答える
0
// array of all the banned strings
$swears = array(
        "a*s",
        "t*****s"
        // add all your swear words to this array
    );

$dirtyStr = "a*s and t*****s";

// remove all the banned strings
$cleanStr = str_replace($swears, '', $dirtyStr);

echo $dirtyStr;
> a*s and t*****s

echo $cleanStr;
> and
于 2013-01-02T06:28:32.067 に答える
0
function censor($string)
{
if ($string)
{
    //badwordsarray
    $badwords = array('some', 'swear', 'word');
    //replacearray                      
    $replace =  array('s**e', 's***r', 'w**d'); 

    $newstring = str_ireplace($badwords, $replace, $string);
    return $newstring;
}
}
 $message = $_POST['message'];
 $filteredmessage = censor($message);
 echo $filteredmessage;
于 2017-01-12T13:07:23.583 に答える