解决组合变音字符造成的页面文字被覆盖问题

现象

原因

组合变音字符大量叠加让其越界显示,周围的字符就会被遮盖

解决方案

将组合变音字符(U+0300-U+036F,U+0489,U+0E47)替换成□

$content = preg_replace('/([\x{0300}-\x{036F}]|\x{0489}|\x{0E47})/u', '□', $content);

ps:另外两个字符集(U+FE20-U+FE2F,U+20D0-U+20FF)没有验证是否会覆盖,蛮写一下

$content = preg_replace('/([\x{0300}-\x{036F}]|[\x{FE20}-\x{FE2F}]|[\x{20D0}-\x{20FF}]|\x{0489}|\x{0E47})/u', '□', $content);

参考资料

https://www.zhihu.com/question/394434460/answer/1222502907

https://blog.csdn.net/Wangdanting123/article/details/98079484

posted @ 2021-10-20 17:21  雨泣的世界  阅读(92)  评论(0)    收藏  举报