php - preg_replace 不接受 unicode

标签 php regex string

我尝试使用 preg_replace 只维护字符串中的有效字符和希伯来语 Unicode 字符。

我在该字符串上遇到错误:

$PLAINText1 = preg_replace('/[^(\x20-\x7F),(\x05D0-\x05F2)]*/','', $PLAINText);

错误是:

Compilation failed: range out of order in character class at offset 25 in....

我已经知道错误仅出现在这个短语中:(\x05D0-\x05F2)

我在这里阅读了很多有关此问题的帖子,但没有找到解决方案。一篇相关文章建议将 } 添加到 Unicode,因此在此字符串上:

$PLAINText1 = preg_replace('/[^(\x20-\x7F),(\x{05D0}-\x{05F2})]*/','', $PLAINText);

我收到了不同的错误:

character value in \x{...} sequence is too large at offset 22 ...

请帮忙。

最佳答案

\x 仅接受两个十六进制数字,因此您的范围将转换为“ENQ 字符、D、0 和 ENQ 之间的任何内容(这是错误)、F 或 2”

尝试在正则表达式末尾添加 Unicode 修饰符 u,并使用 \x{05D0} 明确告诉它使用多少个字符作为十六进制数字.

关于php - preg_replace 不接受 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069456/

相关文章:

PHP curl 用于下载 Facebook 视频

php - Laravel 在 Controller 中手动检查 CSRF

c# - 如何分隔字符串,c#

c# - 从字符串中获取后缀作为 int

java - 为什么我的小程序创建一个单独的窗口

php - As3 & PHP URLEncoding问题!

用于加工楼层输入的正则表达式,例如 E、D、U1、U2 等

java - 如何正确分割非转义分隔符?

regex - 如何定义允许枚举值或模式匹配的模式限制?

java - 如何从数字字符串结果中删除逗号?