【问题标题】:str_ireplace will not work with single quotestr_ireplace 不适用于单引号
【发布时间】:2010-02-15 15:07:24
【问题描述】:

我想替换字符串中的单引号(')。

显然这不起作用...:

$patterns = array();
$replacements = array();
$patterns[0] = "'";
$patterns[1] = '\'';
$replacements[0] = 'Something';
$replacements[2] = 'Same thing just in a other way';

【问题讨论】:

    标签: php str-replace


    【解决方案1】:

    用 (") 替换 (') 对我来说用 str_ireplace 效果很好。

    $test = str_ireplace("'", "\"", "I said 'Would you answer me?'");
    echo $test; // I said "Would you answer me?" 
    

    用 (') 替换 (") 也可以正常工作

    $test = str_ireplace("\"", "'", "I said \"Would you answer me?\"");
    echo $test; // I said 'Would you answer me?' 
    

    【讨论】:

      【解决方案2】:

      看起来您的示例代码已被过度匿名(索引 0 和 2 用于 $replacements?)并且被过度截断(str_ireplace 调用在哪里)但是......我猜你还没有完全理解str_ireplace。

      第一点是str_ireplace不能原地工作。它的返回值是更改后的字符串/字符串数组。

      第二点是,当您有一个搜索和替换数组时,PHP 将通过从每个数组中获取一个项目并将其应用于主题/主题数组,然后再从每个数组中移动到下一个项目然后将其应用于相同的主题。您可以在下面的示例中看到这一点,其中两个主题都将“'”替换为“某物”,并且“相同的东西只是以其他方式”从未出现在结果中。

      $patterns = array();
      $replacements = array();
      $patterns[0] = "'";
      $patterns[1] = '\'';
      $replacements[0] = 'Something';
      $replacements[1] = 'Same thing just in a other way';

      $subjects[0] = "我包含了一个单引号。";
      $subjects[1] = "这也会有报价。";

      $newSubjects = str_ireplace($patterns, $replacements, $subjects);

      print_r($newSubjects);

      运行时会给出

      Array ( [0] => ISomethingve 包含一个单引号。[1] => ThisSomethingll 也有一个引号。)

      【讨论】:

        猜你喜欢
        • 2020-05-10
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-14
        相关资源
        最近更新 更多