更换单词的问题

时间:2013-05-11 11:45:12

标签: php string replace

我尝试根据单词替换单词。这就是我试过的:

<?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 个答案:

答案 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_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);