在PHP中替换UTF-8 KeyCap数字字符。

问题描述 投票:1回答:2

我试图从一个字符串中替换这些[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;

如何做

php regex pcre
2个回答
2
投票

你可以把那些后面有暗号的数字全部删除(你分享的那些数字其实都是后面有一些暗号的数字)。

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

这个... [0-9] 将匹配来自 09\p{M}+ 匹配1个或更多的双音符。因此,常规的ASCII数字将不会被删除。

参见 搜索引擎演示


1
投票

我不知道你需要什么结果。

关键的1到9是组合怎么 "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
© www.soinside.com 2019 - 2024. All rights reserved.