我正在使用 Smarty 传入并显示first_name
变量的内容。一些用户的表情符号字符(http://en.wikipedia.org/wiki/Emoji),first_name
我想知道如何 a)有条件地不显示first_name
包含表情符号的用户或 b)从first_name
. Smarty可以做到这一点吗?可以在 Smarty 中用 PHP 完成吗?
问问题
13703 次
4 回答
15
表情符号在 U+1F300–U+1F5FF 块中编码。
preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $first_name)
这会去掉那些
于 2012-10-30T23:16:18.207 回答
12
我尝试了上面发布的一些解决方案,但是没有一个有效,但是,当我使用 mb_ 函数将字符串转换为 UTF-8 时,它可以正常工作。
您可以使用:
trim( preg_replace('/[\x00-\x1F\x80-\xFF]/', '',
mb_convert_encoding( $emojiString, "UTF-8" ) ) );
为我工作。
于 2016-01-05T16:26:26.260 回答
1
问:这可以用 Smarty 完成吗?答:是的。
Q: Smarty 中可以用 PHP 完成吗?答:是的。但请不要在模板端使用 PHP 标签。
尝试在模板变量上使用变量修饰符。
{* apply modifier to a variable *}
{$first_name|emojistrip}
将以下内容放入文件夹“/smarty/plugins/”中名为“modifier.emojistrip.php”的文件中。
function smarty_modifier_emojistrip($string)
{
return preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $string);
}
于 2012-11-04T10:21:08.423 回答
1
function remove_emoji($string) {
// Match Emoticons
$regex_emoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clear_string = preg_replace($regex_emoticons, '', $string);
// Match Miscellaneous Symbols and Pictographs
$regex_symbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clear_string = preg_replace($regex_symbols, '', $clear_string);
// Match Transport And Map Symbols
$regex_transport = '/[\x{1F680}-\x{1F6FF}]/u';
$clear_string = preg_replace($regex_transport, '', $clear_string);
// Match Miscellaneous Symbols
$regex_misc = '/[\x{2600}-\x{26FF}]/u';
$clear_string = preg_replace($regex_misc, '', $clear_string);
// Match Dingbats
$regex_dingbats = '/[\x{2700}-\x{27BF}]/u';
$clear_string = preg_replace($regex_dingbats, '', $clear_string);
return $clear_string;
}
在https://medium.com/coding-cheatsheet/remove-emoji-characters-in-php-236034946f51找到了这个答案
于 2021-12-08T07:30:02.927 回答