从变量中删除表情符号

时间:2012-10-30 22:46:12

标签: php smarty

我正在使用Smarty传入并显示first_name变量的内容。有些用户在first_name中有表情符号字符(http://en.wikipedia.org/wiki/Emoji),我想知道我是如何a)有条件地不显示用户的first_name如果它包含表情符号或b)过滤掉表情符号字符来自first_name。这可以用Smarty完成吗?可以在Smarty中使用PHP吗?

3 个答案:

答案 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)

问:这可以用Smarty完成吗? 答:是的。

问:在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);
}