替换 PHP 中的 UTF-8 KeyCap 数字字符

Replacing UTF-8 KeyCap Digit Character in PHP

我正在尝试从字符串中替换这些 [0️⃣1️⃣2️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣] 个 UTF 字符。但不知何故,所有其他数字字符也被替换了。 我试过使用按范围替换。 这是我试过的

$post = '  ️7️⃣8️⃣6️⃣️  ';

$post = preg_replace('/[\x{0030}-\x{0040}]/u', '', $post);

echo $post;

怎么做

我不确定你需要什么结果。

密钥的一到九是如何组合“5\u{fe0f}\u{20e3}”。键十是 unicode 符号“\u{1f51f}”。如果只删除这些符号,则必须这样做:

$post = '123️0️⃣1️⃣2️⃣2️⃣3️⃣abc4️⃣x8x5️⃣6️⃣7️⃣8️⃣9️⃣️56';

$post = preg_replace('~[0-9]\x{fe0f}\x{20e3}|\x{1f51f}~u', '', $post);

echo $post;

输出:

123️abcx8x️56

您可以删除所有后面有变音符号的数字(您分享的所有这些数字实际上都是后面有一些变音符号的数字):

preg_replace('/[0-9]\p{M}+/u', '', $post)

[0-9]匹配从09的ASCII数字,\p{M}+匹配1个或多个变音符号。因此,不会删除常规的 ASCII 数字。

regex demo