这取决于你在做什么。
\n\n在大多数情况下,您将使用:
\n\n$string = "string";\n$string[1] = "X";\n$string[2] = "X";\nRun Code Online (Sandbox Code Playgroud)\n\n这会将 $string 设置为“sXXing”,以及
\n\n substr_replace(\'string\', \'XX\', 1, 2);\nRun 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\nfunction mb_substr_replace($output, $replace, $posOpen, $posClose) {\n return mb_substr($output, 0, $posOpen) . $replace . mb_substr($output, $posClose + 1);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后,代码:
\n\necho mb_substr_replace(\'\xe6\x88\x91\xe5\xbe\x88\xe5\x96\x9c\xe6\xac\xa2\xe9\x87\x8d\xe5\xba\x86\', \'XX\', 1, 2);\nRun Code Online (Sandbox Code Playgroud)\n\n将显示 \xe6\x88\x91XX\xe6\xac\xa2\xe9\x87\x8d\xe5\xba\x86。
\n