我尝试根据单词替换单词。这就是我试过的:
<?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
?
答案 0 :(得分: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
答案 1 :(得分:3)
这是因为你的爆炸函数将字符串拆分为数组,而数组的一个元素的值为'n'
这个数组的值被替换为“”,所以你从ganti中失去'n'并且还'''''''''''''''''''
这就是发生的事情
$rejectarray=explode(" ",$reject);
返回
$rejectarray = array("dan", "n", "bb", "galeri");
要解决此问题,您需要具有包含此三个值的数组
$rejectarray = array("dan", "bb", "galeri");
为此你应该使用这个
取消设置值unset($rejectarray[1]);
然后做
echo str_replace($rejectarray,"",$text);
然后你将正确地实现你的结果
答案 2 :(得分:1)
$reject[1]='n';
替换为''(NULL VALUE)。 所以ganti让gani和pn变成pi
答案 3 :(得分: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);