我有以下代码:
$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
$string = str_replace ($badChars, $goodChars, $string);
当我查看$string
时,我可以看到W,X和Y已经被希望替换为A,B和C.但是$string
仍然包含零。
我认为这可能是某种字符串/整数混淆,所以我也尝试过:
$badChars = array("W", "X", "Y", 0);
$goodChars = array("A", "B", "C", 1);
......但没有任何区别。
为什么str_replace()
会忽略这些数字?
答案 0 :(得分:1)
我很惊讶它能够以你所拥有的方式工作(或者,因为你编辑了问题,你拥有它的方式,这是一个不返回的str_replace ($badChars, $goodChars, $string);
) 。 str_replace
返回修改后的字符串:
$string = str_replace ($badChars, $goodChars, $string);
除此之外,代码还可以。使用测试代码:
<?php
$string = "WAIT XEROX YETI 1234567890";
$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
$string = str_replace ($badChars, $goodChars, $string);
var_dump($string);
?>
你得到:
string(26) "AAIT BEROB CETI 1234567891"
答案 1 :(得分:1)
答案 2 :(得分:1)
$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
echo str_replace ($badChars, $goodChars, "WXY0 ABC1 lol");
此代码的结果是: ABC1 ABC1 lol
所以看起来你的代码是正确的,唯一的缺陷可能是replace函数本身返回一个字符串,而不是 一个mutator方法 。您应该可以访问:
$val = str_replace ($badChars, $goodChars, "WXY0 ABC1 lol");
答案 3 :(得分:1)
让我提醒您str_replace()
不会修改原始字符串,但会返回修改过的字符串:
<?php
$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
echo str_replace ($badChars, $goodChars, 'WXY0');
如您所料,返回ABC1
。