【问题标题】:Search a string replace a word with array's value搜索字符串用数组的值替换单词
【发布时间】:2013-04-18 04:12:00
【问题描述】:

这个想法是在一个字符串中搜索某些单词并根据特定的数组将它们更改为其他内容。让我告诉你我的意思。

$string = "hello buddy, I'm your friend or maybe a fellow";      

假设friends 是一个脏话。我想把这个词改成我想要的。所以我做了这个:

$swears = array(
"friend" => "fri**d",
"buddy"  => "bu**y",
"fellow" => "fe**ow"
);

我想根据数组的键搜索字符串并将其替换为它的值。我确实在网上搜索过,我得到的只是根据数组键替换数组中的值。所以在尝试之后我想出了这个:

$string = "hello buddy, I'm your friend or maybe a fellow";  

$swears = array(
"friend" => "fri**d",
"buddy"  => "bu**y",
"fellow" => "fe**ow"
);

$foreach  = $string; 
foreach($swears as $bad => $good){
$foreach       = str_replace($bad,$good,$foreach);
$filtered =  $foreach;
 }
echo $filtered;

我知道它有效,但有没有一种简单的方法让我觉得我把整个事情复杂化了。如果我很好,是否可能会导致问题,如果我有大字符串,或者需要时间来处理它。

【问题讨论】:

    标签: php arrays string


    【解决方案1】:

    str_replace 可能会提供 array 的搜索词和 array 的替换词:

    <?php
    $string = "hello buddy, I'm your friend or maybe a fellow";
    
    $swears = array(
        "friend" => "fri**d",
        "buddy"  => "bu**y",
        "fellow" => "fe**ow"
    );
    
    echo str_replace(array_keys($swears), array_values($swears), $string);
    ?>
    

    演出:

    hello bu**y, I'm your fri**d or maybe a fe**ow
    

    【讨论】:

      【解决方案2】:

      问题是您选择将单词和替换作为键和值放在一个数组中。更简单的方法是使用 2 个索引数组。

      $words = array( 'friend', 'buddy', 'fellow' );
      $replacements = array( 'fri**nd', 'bu**dy', 'fe**ow' );
      
      $result = str_replace( $words, $replacements, $yourString );
      

      这样您就不必使用array_keys 隐式创建新数组。

      如果您绝对想将搜索/替换存储在关联数组中,在这种情况下不要使用 str_replace 并使用 strtr

      $swears = array(
          "friend" => "fri**d",
          "buddy"  => "bu**y",
          "fellow" => "fe**ow"
      );
      
      $filtered = strtr($string, $swears);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-13
        • 2015-12-14
        • 2015-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多