如何检测PHP中的特殊字符。尝试将字符串保存到数据库时出现错误:
1366不正确的字符串值mysql
所以我想在尝试将此字符串插入数据库之前检测到此问题。如何检测这种类型的字符串?我不想将数据库更改为utf8mb4。在插入php端之前,我需要检测并跳过此字符串。
我尝试了很多方法来执行此操作,例如mb_detect_encoding告诉我该字符串为UTF-8。 我发现了这个功能:
public function contains_invalid_characters($text) {
return (bool) preg_match('/[a-zA-Z0-9äöüß "!§$%&\/()=[\]\?.:,;\-_]/u', $text);
}
它可以工作,但这可以检测到我想从数据库中获取的很多来自世界各地的字符串,例如
олей,عيناها或عين
我只需要检测看起来像图标或我不知道如何命名的字符串。任何帮助都很好
答案 0 :(得分:0)
即使我有同样的问题,这也是我在网上找到的解决方案。您可以使用此功能来检测这些特殊字符。
function has_emojis( $string ) {
preg_match( '/[\x{1F600}-\x{1F64F}]/u', $string, $matches_emo );
return !empty( $matches_emo[0] ) ? true : false;
}