我正在使用Smarty传入并显示first_name
变量的内容。有些用户在first_name
中有表情符号字符(http://en.wikipedia.org/wiki/Emoji),我想知道我是如何a)有条件地不显示用户的first_name
如果它包含表情符号或b)过滤掉表情符号字符来自first_name
。这可以用Smarty完成吗?可以在Smarty中使用PHP吗?
答案 0 :(得分:10)
表情符号在块U + 1F300-U + 1F5FF中编码。
preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $first_name)
这会剥夺那些
答案 1 :(得分:7)
我尝试了上面发布的一些解决方案,但没有人工作,但是,当我使用mb_函数将字符串转换为UTF-8时,它正常工作。
您可以使用:
trim( preg_replace('/[\x00-\x1F\x80-\xFF]/', '',
mb_convert_encoding( $emojiString, "UTF-8" ) ) );
适合我。
答案 2 :(得分:1)
尝试在模板变量上使用变量修饰符。
{* 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);
}