替换字符串中字符的位置

war*_*ker 4 php

在 PHP 中,如何用Xso替换字符串的第二个和第三个字符?stringsXXing

字符串的长度固定为六个字符。

谢谢

Ala*_*blo 5

这取决于你在做什么。

\n\n

在大多数情况下,您将使用:

\n\n
$string = "string";\n$string[1] = "X";\n$string[2] = "X";\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会将 $string 设置为“sXXing”,以及

\n\n
 substr_replace(\'string\', \'XX\', 1, 2);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但如果您想要一种完美的方式来进行这样的剪切,您应该了解编码。

\n\n

如果您的 $string 是 \xe6\x88\x91\xe5\xbe\x88\xe5\x96\x9c\xe6\xac\xa2\xe9\x87\x8d\xe5\xba\x86,则输出将为 "\xef\ xbf\xbdXX\xe5\xbe\x88\xe5\x96\x9c\xe6\xac\xa2”而不是“\xe6\x88\x91XX\xe6\xac\xa2\xe9\x87\x8d\xe5\xba\x86” 。

\n\n

避免编码问题的“完美”方法是使用PHP MultiByte String 扩展

\n\n

还有一个自定义 mb_substr_replace 因为它尚未实现:

\n\n
function mb_substr_replace($output, $replace, $posOpen, $posClose) {\n    return mb_substr($output, 0, $posOpen) . $replace . mb_substr($output, $posClose + 1);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,代码:

\n\n
echo mb_substr_replace(\'\xe6\x88\x91\xe5\xbe\x88\xe5\x96\x9c\xe6\xac\xa2\xe9\x87\x8d\xe5\xba\x86\', \'XX\', 1, 2);\n
Run Code Online (Sandbox Code Playgroud)\n\n

将显示 \xe6\x88\x91XX\xe6\xac\xa2\xe9\x87\x8d\xe5\xba\x86。

\n