为什么这个字符串替换函数不影响数字?

时间:2012-01-23 06:43:36

标签: php string

我有以下代码:

$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()会忽略这些数字?

4 个答案:

答案 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