str_replace有奇怪的问题。
这是我的代码:
function replace_text($text) {
$array = array(
':big' => 'BIG',
':bigs' => 'BIIIGSS',
);
问题是,当我输入bigs
(带有s)时,代码只会将文字转为BIGs
而不是BIIIGSS
。
答案 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',
);