替换单词的问题


Issue with replacing word

我尝试逐个替换单词。这是我尝试过的:

<?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 ?

尝试添加空格:

$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

这是因为你的爆炸函数拆分字符串到数组和数组的一个元素的值为'n'

这个数组的值被替换为",所以你从ganti和PROM 'pin'中丢失了'n'

事情就是这样

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

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

要解决这个问题,您需要一个包含以下三个值的数组

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

你应该使用

来取消设置
unset($rejectarray[1]);

then do

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

然后你会得到正确的结果

$reject[1]='n';

被" (NULL VALUE) "代替。ganti变成了gani pn变成了

使用array_intersectarray_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);