3

単語に基づいて単語を置き換えようとします。これは私が試したものです:

<?php
$reject = "dan n bb galeri";
$rejectarray=explode(" ",$reject);
$text = "saya dan kamu ganti pin bb";
echo str_replace($rejectarray,"",$text); //saya kamu gati pi
?>

saya kamu ganti pin結果は、代わりに だと思いますsaya kamu gati pi。結果を次のようにする方法はsaya kamu ganti pin

4

4 に答える 4

4

スペースを追加してみてください:

$reject = "dan n bb galeri";
$text   = "saya dan kamu ganti pin bb";

function addspaces($value)
{
    return " ".$value." ";
}

$rejectarray = array_map('addspaces', explode(" ", $reject) );
$text = addspaces( $text ); // " saya ... bb "
// and strip result with trim()
echo trim( str_replace($rejectarray, " ", $text) ); //replace with space " "

結果:

saya kamu ganti pin
于 2013-05-11T12:01:56.093 に答える
3

これは、分解関数が文字列を配列に分割し、配列の 1 つの要素の値が「n」であるためです。

この配列の値は "" に置き換えられるため、ganti と prom の 'pin' から 'n' が失われます。

これが起こっていることです

$rejectarray=explode(" ",$reject);

戻り値

$rejectarray = array("dan", "n", "bb", "galeri");

この問題を解決するには、この 3 つの値を含む配列が必要です

 $rejectarray = array("dan", "bb", "galeri");

このため、これを使用して値を設定解除する必要があります

unset($rejectarray[1]);

それからする

echo str_replace($rejectarray,"",$text); 

そして、あなたはあなたの結果を正しく達成します

于 2013-05-11T11:48:36.510 に答える
1

array_intersectおよびarray_diff関数を使用します。

$reject = "dan n bb galeri";
$rejectarray = explode(" ", $reject);

$text = "saya dan n kamu ganti pin bb";
$text_array = explode(" ", $text);

//Find common values
$common_values = array_intersect($rejectarray, $text_array);

//Clean out common words from text array
$new_text_array = array_diff($text_array, $common_values);

//Merge array values and from new text
echo implode(' ', $new_text_array);
于 2013-05-11T12:12:27.187 に答える