【问题标题】:Issue with replacing word替换单词的问题
【发布时间】:2013-05-05 23:48:15
【问题描述】:

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

<?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 字符串中每次出现的 'n',因为 'n' 是 $rejectarray 中的一个元素。
  • 使用kakamumu 仍会导致kamu

标签: php string replace


【解决方案1】:

这是因为您的explode函数将字符串拆分为数组,并且数组的一个元素的值为'n'

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

这就是发生的事情

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

返回

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

要解决这个问题,你需要有一个包含这三个值的数组

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

为此,您应该使用 this 取消设置值

unset($rejectarray[1]);

然后做

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

然后你就会正确地实现你的结果

【讨论】:

  • 此答案不是常见的解决方案,仅适用于上述示例
  • @safarov 是的,在其他情况下我的 $text = "saya dan n kamu ganti pin bb";如何制作结果 =“saya kamu ganti pin”?
【解决方案2】:

$reject[1]='n';

由 ''(NULL VALUE) 代替。 所以ganti变成了gani,pn变成了pi

【讨论】:

    【解决方案3】:

    尝试添加空格:

    $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
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2016-10-14
        • 2012-03-18
        • 2019-09-04
        • 2011-01-17
        • 1970-01-01
        • 2020-03-27
        • 2021-12-29
        • 2015-03-02
        • 1970-01-01
        相关资源
        最近更新 更多