gpt4 book ai didi

php - 如何在 PHP 中用 '*' 替换不在 [0x5E10, 0x7F35] 范围内的字符?

转载 作者:可可西里 更新时间:2023-11-01 13:38:14 24 4
gpt4 key购买 nike

我不熟悉正则表达式如何处理十六进制,有人知道吗?

最佳答案

下面的技巧:

$str = "some മനുഷ്യന്റെ";

echo preg_replace('/[\x{00ff}-\x{ffff}]/u', '*', $str);
// some **********

echo preg_replace('/[^\x{00ff}-\x{ffff}]/u', '*', $str);
// *****മനുഷ്യന്റെ

重要的是 u 修饰符(参见 here ):

This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.

here简短说明为什么 \uFFFF 在 PHP 中不起作用:

Perl and PCRE do not support the \uFFFF syntax. They use \x{FFFF} instead. You can omit leading zeros in the hexadecimal number between the curly braces. Since \x by itself is not a valid regex token, \x{1234} can never be confused to match \x 1234 times. It always matches the Unicode code point U+1234. \x{1234}{5678} will try to match code point U+1234 exactly 5678 times.

关于php - 如何在 PHP 中用 '*' 替换不在 [0x5E10, 0x7F35] 范围内的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2728070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com