在PHP中检测特殊字符

时间:2018-08-17 08:02:17

标签: php string decoding

如何检测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);
}

它可以工作,但这可以检测到我想从数据库中获取的很多来自世界各地的字符串,例如

  

олей,عيناها或عين

我只需要检测看起来像图标或我不知道如何命名的字符串。任何帮助都很好

1 个答案:

答案 0 :(得分:0)

即使我有同样的问题,这也是我在网上找到的解决方案。您可以使用此功能来检测这些特殊字符。

function has_emojis( $string ) {

    preg_match( '/[\x{1F600}-\x{1F64F}]/u', $string, $matches_emo );

    return !empty( $matches_emo[0] ) ? true : false;

}