91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何刪除非utf8字符

發布時間:2021-06-11 11:19:51 來源:億速云 閱讀:223 作者:小新 欄目:編程語言

小編給大家分享一下php如何刪除非utf8字符,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

php刪除非utf8字符的方法:首先創建一個PHP示例文件;然后使用正則表達式“preg_replace($regex, '$1', $text);”方法刪除非utf8字符即可。

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

具體問題:

php怎么刪除非utf8字符?

php 從字符串中刪除非UTF8字符

我在從字符串中刪除非utf8字符時出現問題,這些字符無法正確顯示。像這樣的字符0x97 0x61 0x6C 0x6F(十六進制表示)

刪除它們的最佳方法是什么?正則表達式還是其他?

解決辦法:

使用正則表達式方法:

$regex = <<<'END'
/
  (
    (?: [\x00-\x7F]                 # single-byte sequences   0xxxxxxx
    |   [\xC0-\xDF][\x80-\xBF]      # double-byte sequences   110xxxxx 10xxxxxx
    |   [\xE0-\xEF][\x80-\xBF]{2}   # triple-byte sequences   1110xxxx 10xxxxxx * 2
    |   [\xF0-\xF7][\x80-\xBF]{3}   # quadruple-byte sequence 11110xxx 10xxxxxx * 3 
    ){1,100}                        # ...one or more times
  )
| .                                 # anything else
/x
END;
preg_replace($regex, '$1', $text);

它搜索UTF-8序列,并將其捕獲到組1中。它還匹配無法識別為UTF-8序列的一部分的單個字節,但不捕獲這些字節。替換是捕獲到組1中的任何內容。這將有效刪除所有無效字節。

通過將無效字節編碼為UTF-8字符,可以修復字符串。但是,如果錯誤是隨機的,則可能會留下一些奇怪的符號。

$regex = <<<'END'
/
  (
    (?: [\x00-\x7F]               # single-byte sequences   0xxxxxxx
    |   [\xC0-\xDF][\x80-\xBF]    # double-byte sequences   110xxxxx 10xxxxxx
    |   [\xE0-\xEF][\x80-\xBF]{2} # triple-byte sequences   1110xxxx 10xxxxxx * 2
    |   [\xF0-\xF7][\x80-\xBF]{3} # quadruple-byte sequence 11110xxx 10xxxxxx * 3 
    ){1,100}                      # ...one or more times
  )
| ( [\x80-\xBF] )                 # invalid byte in range 10000000 - 10111111
| ( [\xC0-\xFF] )                 # invalid byte in range 11000000 - 11111111
/x
END;
function utf8replacer($captures) {
  if ($captures[1] != "") {
    // Valid byte sequence. Return unmodified.
    return $captures[1];
  }
  elseif ($captures[2] != "") {
    // Invalid byte of the form 10xxxxxx.
    // Encode as 11000010 10xxxxxx.
    return "\xC2".$captures[2];
  }
  else {
    // Invalid byte of the form 11xxxxxx.
    // Encode as 11000011 10xxxxxx.
    return "\xC3".chr(ord($captures[3])-64);
  }
}
preg_replace_callback($regex, "utf8replacer", $text);

編輯:

  • !empty(x)將匹配非空值("0"被認為是空的)。

  • x != ""將匹配非空值,包括"0"。

  • x !== ""將匹配""以外的任何內容。

在這種情況下,x != ""似乎是最好的選擇。

我也加快了比賽速度。而不是單獨匹配每個字符,它匹配有效的UTF-8字符序列。

以上是“php如何刪除非utf8字符”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

阿克陶县| 东安县| 吉林省| 乌海市| 玉环县| 昌宁县| 宁南县| 祥云县| 师宗县| 延津县| 灵寿县| 荣昌县| 西乌珠穆沁旗| 图木舒克市| 资源县| 专栏| 南京市| 乐昌市| 栾城县| 宝山区| 乐业县| 叶城县| 澎湖县| 高邑县| 景泰县| 旌德县| 连城县| 新巴尔虎右旗| 井冈山市| 天峨县| 安丘市| 霍林郭勒市| 宁夏| 碌曲县| 鹤山市| 安达市| 元江| 衡阳市| 新宾| 岱山县| 墨竹工卡县|