为了账号安全,请及时绑定邮箱和手机立即绑定

解码无效的解析字符串,例如“u0627u0644u0649 u0627u0644u0623”

解码无效的解析字符串,例如“u0627u0644u0649 u0627u0644u0623”

PHP
当年话下 2022-07-29 16:51:29
我发现了一些数据,其中包括"u0627u0644u0649 u0627u0644u0623". 通常,这些更像\u0627\u0644\u0649 \u0627\u0644\u0623是数据出现问题。为了纠正它,我唯一的选择是调整那里的内容。"u0627u0644u0623 u0644 u0627"我还没有发现字符串是“普通单词”和“普通单词”的组合的任何情况,但这可能会发生。我还想"\u0627\u0644"安全地转换任何类似的东西或其组合,以便像“我的字符串”这样的字符串\u0627\u0644 u0627u0644u0623 u0644 u0627."将被正确转换。谁能推荐一个正则表达式或适当的方法来安全地“修复”这些字符串?更新如果我们只更正我们第一次测试的字符串以确保它只包含类似的字符串u0627u0644u0649 u0627u0644u0623怎么办?这可以安全地(以及如何)完成吗?现在,我正在使用^(u[A-Fa-f0-9]{4}\s?)+$我的正则表达式足以满足所需的目的。我也同意可能没有保证的解决方案,但到目前为止这似乎在我的测试用例中有效。
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

^(u[A-Fa-f0-9]{4}\s?)+$模式将找不到与前导空格匹配的内容。

要仅匹配包含u[A-Fa-f0-9]{4}和空格 ( \s) 模式的字符串,您可以使用

'~^\s*u[A-Fa-f0-9]{4}(?:\s*u[A-Fa-f0-9]{4})*\s*$~'

查看正则表达式演示

细节

  • ^- 字符串的开始

  • \s*- 0+ 个空格

  • u[A-Fa-f0-9]{4}-u然后是四个十六进制字符

  • (?:\s*u[A-Fa-f0-9]{4})*- 0 次或多次出现的序列

    • \s*- 0+ 个空格

    • u[A-Fa-f0-9]{4}-u然后是四个十六进制字符

  • \s*- 0+ 个空格

  • $- 字符串结束。

您可以将其缩短为 '~^\s*(u[A-Fa-f0-9]{4})(?:\s*(?1))*\s*$~'PHP。


查看完整回答
反对 回复 2022-07-29
  • 1 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信