str_replace案例或替换顺序的歧义

时间:2011-06-25 04:18:18

标签: php function str-replace

str_replace有奇怪的问题。

这是我的代码:

function replace_text($text) {
        $array = array(
        ':big' => 'BIG',
        ':bigs' => 'BIIIGSS',
        );

问题是,当我输入bigs(带有s)时,代码只会将文字转为BIGs而不是BIIIGSS

3 个答案:

答案 0 :(得分:1)

请尝试使用不区分大小写的str_ireplace()

当到达数组中的第二个元素时,会发生什么?值为BIGs,因此小写bigs不存在,因此不会被替换。

答案 1 :(得分:1)

我怀疑这是你的完整代码,但只是函数调用多次调用str_replace的函数?

如果是这样,那么您可能首先进行第一次替换,因此您的字符串bigs现在是BIGs。然后运行第二个替换,但现在您再也找不到小写字符串bigs

正如手册所说,

str_replace从左到右替换。

答案 2 :(得分:1)

嗯,大个子确实比较大,不是吗?更改顺序,以便检查大人物是否先匹配:

function replace_text($text) {
    $array = array(
    ':bigs' => 'BIIIGSS',
    ':big' => 'BIG',
    );