php - 摆脱不良字符,但保留所有语言的所有字符
问题描述
我正在尝试清理 PHP 中的播客描述,以消除不可见、表情符号、随机字节等不良字符,以写入 MySQL。问题是播客描述是所有语言的,并且包含我需要保留在每个可以想象的字符集中的合法文本,可能包括一些难以想象的字符。我看不到创建字符白名单或字符黑名单的方法。有什么建议么?
解决方案
如果您可以确保您的字符串是 UTF-8(例如使用utf8_encode()
或),则可以在表达式iconv()
中使用字符类别黑/白名单。
首先,我将删除\p{C}
("other") 和\p{S}
("symbol")类别中的所有字符。那应该抓住大部分的杂物。
$description = "Some random string, with a emoji";
$filtered = preg_replace('/[\p{C}\p{S}]/u', '', $description);
// string(33) "Some random string, with a emoji"
请注意,您需要使用u
修饰符。
这应该是一个很好的起点,但它可能过于严格。它可能会从描述中删除太多内容。例如,货币符号在某些经济播客描述中可能是有效的,而数学符号在基于数学的播客描述中可能是绝对必要的。
如有必要,您可以从中调整它以仅替换特定的子类别。\p{S}
因此,您可能只想删除\p{Sk}
(“修饰符”)和\p{So}
(“其他符号”)类别中的字符,而不是删除整个类别。或者您可能想要包含其他类别,例如\p{Pc}
(“连接符标点符号”)。
推荐阅读
- php - 如何知道 php 文件是否正在运行?
- javascript - 通过 Node.js ws websockets 中的某个通道发送消息
- android - 从 Web 服务更新 SQLite 数据库
- html - 将路由器出口变量传递给父组件
- r - 渲染闪亮页面时出现数据表问题
- robotframework - 安装robotframework-datadriver 0.3.3但得到以下错误:“python setup.py egg_info”失败,错误代码为1
- outlook - 如何分别定位 Outlook 2016 和 Outlook 2019
- javascript - 如何在特定日期发生时计算“+1”
- apache-kafka - 如何为未命名的消费者组授权kafka主体
- javascript - 集成 jquery 和 javascript 从