做了一個頁面,主要是手機上輸入的內容,要顯示在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>