【发布时间】:2021-05-09 01:19:06
【问题描述】:
我必须将非 ASCII 字符编码为符号 \X--\ 的文本解析,其中 -- 是字符的 Unicode 编号。例如:
vis\XED\vel numa das imagens pr\XE9\vias \XE0\ administra\XE7\\XE3\o
应该转换成
visível numa das imagens prévias à administração
我可以像尼安德特人那样做:寻找“\X”,2 个字符后确认有“/”,用相应的字符替换整个内容,冲洗并重复,直到找不到更多匹配项。但是,肯定有更好的方法来做到这一点。
然后,我尝试使用正则表达式,这是我不太了解的东西。在 RegExr 上,我最终得到了符合我需要的正则表达式 '/\X\w{2}\/'。但是当我尝试将它与 preg_replace_callback() 一起使用时,特别是使用字符串 "/\\X\w{2}\\/" 作为正则表达式时,我收到“非法/不支持的转义序列”错误。我尝试了一些我在网上找到的其他正则表达式,无论是在这个网站上还是在其他地方,都无济于事。
最后,我也不太确定用适当的字符替换 Unicode 数字的最佳方法是什么。
所以,我的问题有两个:
• 查找转义字符的理想方法是什么?
• 如何从 Unicode 编号中获取 UTF 字符?
【问题讨论】:
-
一个问题——你的字符串不应该是
administra\XE7\\XE3\o,而不是administra\XE7\XE3\o吗? -
@El_Vanja 确实!感谢您指出我的错误。现在已经修好了。
-
对于 REGEX 表达式,您应该双转义反斜杠以使其工作。所以在 REGEX 编辑器中的双反斜杠需要在 PHP 中变成三重反斜杠。
-
第二部分见this question。
-
@El_Vanja 感谢您的帮助!如果没有它,我需要很长时间才能弄清楚这一点。