我有以下PHP字符串:
\ud83c\udf38Owner IG: deidarasss\n\ud83c\udf38free ongkir BANDA ACEH dan LHOKSEUMAWE\n\u27a1 testimoni: #testydfs\n\ud83d\udcf1LINE: darafitris\nsold=delete\nCLOSE \ud83d\ude0d\ud83d\ude03
我想从这个字符串中删除所有unicode,我该怎么办?
我尝试过以下操作:
private 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;
}
但它并没有真正帮助
答案 0 :(得分:0)
要从字符串 $ text 中删除所有\u....
,请按以下步骤操作:
$text = preg_replace('/\\\\u[0-9A-F]{4}/i', '', $text);
这使用正则表达式来查找这些事件,并用空字符串替换所有这些事件。
或者,要将所有出现的\u....
替换为其代表的字符,请执行以下操作:
$text = json_decode('"' . str_replace('"', '\"', $text) . '"');
这将文本用双引号括起来,转义其中的任何双引号,这使它成为有效的JSON字符串。由于\ u是一个有效的JSON转义码,因此可以解码该JSON以获取实际字符。
答案 1 :(得分:0)
由于找不到更好的解决方法,因此这是我的解决方案。如果您的数据太大,则不建议使用此代码。
$input = '\ud83c\udf38Owner IG: deidarasss\n\ud83c\udf38free ongkir BANDA ACEH dan LHOKSEUMAWE\n\u27a1 testimoni: #testydfs\n\ud83d\udcf1LINE: darafitris\nsold=delete\nCLOSE \ud83d\ude0d\ud83d\ude03';
while(strpos($input,'\u') !== false){
$bar_u0 = strpos($input,'\u');
$input = str_replace(substr($input, $bar_u0, 6), '', $input);
}
echo $input;