我尝试逐个替换单词。这是我尝试过的:
<?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_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);