javascript - 如何判斷字串中是否包含emoji字元?

WBOY
發布: 2016-08-18 09:16:35
原創
2872 人瀏覽過

做了一個頁面,主要是手機上輸入的內容,要顯示在PC瀏覽器上。

然而手機端能輸入emoji,但瀏覽器顯示不出來。由於某些原因也不想讓它顯示出來。

所以希望在手機端提交時做一下檢測,檢查用戶輸入的文本中是否包含emoji,如果有就提示用戶不能包含emoji。

請問這個if條件該怎麼寫?

php後端或js前端的程式碼都可以。

回覆內容:

做了一個頁面,主要是手機上輸入的內容,要顯示在PC瀏覽器上。

然而手機端能輸入emoji,但瀏覽器顯示不出來。由於某些原因也不想讓它顯示出來。

所以希望在手機端提交時做一下檢測,檢查用戶輸入的文本中是否包含emoji,如果有就提示用戶不能包含emoji。

請問這個if條件該怎麼寫?

php後端或js前端的程式碼都可以。

用正規表示式過濾唄,或用unicode編碼判斷

http://www.unicode.org/Public...
根據裡面列出來的範圍進行過濾,可以用正規表達式,也可以列一個hash map

var re = /[表情1]|[表情2]|[表情3]..../ ;
re.test(你要偵測的字元);

其實有一個辦法。用mb系列函數來實作。首先確定長度。然後,循環判斷每個字符,那個字符是4個位元組的就可以了。 emoiji的一個符號佔用4個字元。一般的字串也就是漢字最多佔用3個字元。這麼一判斷,就能搞定了。

確定字元的編碼,然後,匹配,替換。

<code>var param = "";
var regRule = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g;
if(param.match(regRule)) {
    param = param.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "");
    alert("不支持表情");
} </code>
登入後複製

<code>function have_emoji($str){
    $mat = [];
    preg_match_all('/./u', $str,$mat);
    foreach ($mat[0] as $v){
        if(strlen($v) > 3){return true;}
    }
    return false;
}</code>
登入後複製
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板