PHP从String中删除特殊字符(Emoji)

时间:2015-02-11 14:47:13

标签: php xml strip emoji

我需要从字符串中删除表情符号,我们可以存储信息,但由于表情符号中使用的特殊字符,它会破坏我们的xml导出。我希望在将表情符号传送到数据库之前使用PHP来删除表情符号 。 以下是一个此类表情符号的示例:😊

我已尝试过此主题中描述的多种方法:PHP : writing a simple removeEmoji function

然而他们不起作用。有人可以建议一种剥夺所有这些的方法吗?

到目前为止,我所尝试的内容无法删除上述示例表情符号:

function removeEmoji($string) {
    return preg_replace('/&#x(e[0-9a-f][0-9a-f][0-9a-f]|f[0-8][0-9a-f][0-9a-f])/i', '', $string);
}

我也尝试过:

public static function removeEmoji($text) {

    $clean_text = "";

    // Match Emoticons
    $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
    $clean_text = preg_replace($regexEmoticons, '', $text);

    // Match Miscellaneous Symbols and Pictographs
    $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
    $clean_text = preg_replace($regexSymbols, '', $clean_text);

    // Match Transport And Map Symbols
    $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
    $clean_text = preg_replace($regexTransport, '', $clean_text);

    // Match Miscellaneous Symbols
    $regexMisc = '/[\x{2600}-\x{26FF}]/u';
    $clean_text = preg_replace($regexMisc, '', $clean_text);

    // Match Dingbats
    $regexDingbats = '/[\x{2700}-\x{27BF}]/u';
    $clean_text = preg_replace($regexDingbats, '', $clean_text);

    return $clean_text;
}

并尝试过:

$text = preg_replace('/&#x(e[0-9a-f][0-9a-f][0-9a-f]|f[0-8][0-9a-f][0-9a-f])/i', '', $text);

这些都不起作用,我用来调用所有这些的脚本是:

  $comments = remove_emoji($comments);

0 个答案:

没有答案