2012-10-30 12 views
3

卸下表情符號我使用Smarty的傳遞中並顯示first_name變量的內容。有些用戶在他們的first_name表情符(http://en.wikipedia.org/wiki/Emoji),我想知道我怎麼可以一)有條件地不顯示用戶的first_name如果它包含表情符號,或者b)從first_name過濾掉的表情符號字符。這可以用Smarty完成嗎? Smarty中的PHP可以使用它嗎?從可變

+0

它只是(糾正我,如果我錯了)U + F000到U + FFFF –

回答

9

的表情符號被編碼塊中的U + 1F300-U + 1F5FF。

preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $first_name) 

這將剝奪那些出

+0

我想這沒有運氣,但我不知道如果我正確地實現。以下是我嘗試編碼的方法:http://jsbin.com/epefej/1/edit。 – 585connor

+0

@ 585connor:你需要做的像'$如first_name =的preg_replace('〜\ XEE [\ x80- \ XBF] [\ x80- \ XBF] | \ XEF [\ x81- \ X83] [\ x80- \ XBF ]〜','',$ first_name);回聲$ first_name;'從PHP當然(PHP打開/關閉標籤是'<?php'和'?>')。 –

+0

它在preg_replace中不匹配。我只是有表情符號()如何解碼它像x80 ....?所以我可以preg_replace? – saravanabawa

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); 
} 

+0

哦對,這是Smarty ... –

6

我嘗試了一些上面張貼的解決方案,但沒有一個能用的,但是,當我轉換的字符串爲UTF-8使用MB_發揮它正常工作。

您可以使用:

trim(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', 
     mb_convert_encoding($emojiString, "UTF-8"))); 

爲我工作。

+0

Upvoted!這是我在SO上找到的第6個解決方案,也是我處理特定字符串的唯一解決方案。 –

+1

這也將刪除特殊字符,如ñ或é – xavip