str_ireplace不适用于单引号

时间:2010-02-15 15:07:25

标签: php str-replace

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

显然这不起作用......:

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

2 个答案:

答案 0 :(得分:2)

使用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?' 

答案 1 :(得分:0)

看起来您的示例代码已被匿名化(索引0和2代表$ replacementments?)并且过度截断(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] = "I've included a single quote.";
$subjects[1] = "This'll also have a quote.";

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

print_r($newSubjects);

运行时,这会给出

数组([0] => ISomethingve包含单引号。[1] => ThisSomethingll也有引号。)