6

first_name変数の内容を渡して表示するために Smarty を使用しています。一部のユーザーは絵文字文字 ( http://en.wikipedia.org/wiki/Emoji ) を使用してfirst_nameおり、a) 絵文字が含まれている場合に条件付きでユーザーを表示しないようにするか、first_nameb) から絵文字文字を除外する方法を考えていますfirst_name。これは Smarty で実行できますか? Smarty の PHP で実行できますか?

4

4 に答える 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

Q: これは Smarty で実行できますか? A: はい。

Q: Smarty で PHP を使用することはできますか? A: はい。ただし、テンプレート側で 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 に答える