如果我这样使用(check-sat)
......
substr_replace()
...它工作正常,但如果更改只是省略号的冒号(不改变起始位置)我得到......
echo substr_replace('Replace: foo', 'bar', 9, 3);
// Echoes 'Replace:bar'
但是,如果我改变起始位置,它会起作用:
echo substr_replace('Replace… foo', 'bar', 9, 3);
// Echoes 'Replace��baroo'
echo substr_replace('Replace… foo', 'bar', 11, 3);
// Echoes 'Replace… bar'
是否将省略号视为三个单独的字符以进行抵消?这是编码问题吗?
答案 0 :(得分:0)
经过多次拔毛后,我找到了答案: substr_replace
不是多字节(utf-8)兼容。
因为没有mb_substr_replace()
这里的解决方法与上面的示例相同:
mb_internal_encoding("UTF-8");
$text = 'Replace… foo';
$start = 9;
$length = 3;
echo mb_substr($text, 0, $start) . $foo . mb_substr($text, $start, $start+$length);
有关该解决方案的更多详细信息,请参阅PHP Manual.