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

溫馨提示×

溫馨提示×

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

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

怎么解決PHP+trim亂碼問題

發布時間:2021-12-14 11:03:43 來源:億速云 閱讀:162 作者:iii 欄目:編程語言

本篇內容主要講解“怎么解決PHP+trim亂碼問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么解決PHP+trim亂碼問題”吧!

PHP trim亂碼是因為在PHP中字符串函數默認都不是multibyte-safe的,其解決辦法就是封裝一個mb_trim函數來解決亂碼即可。

怎么解決PHP+trim亂碼問題

本文操作環境:Windows7系統,PHP7.4版,Dell G3電腦。

如何解決PHP+trim亂碼問題?

PHP的Trim截取亂碼

一直使用Trim過濾首尾兩端的字符串,關于Trim的官方描述:

trim — 去除字符串首尾處的空白字符(或者其他字符)

今天發現一個很奇怪的問題, 代碼如下:

<?php
$str = '研發、產品、';
echo trim($str, '、');

猜下這個會返回什么?“研發、產品”?NO,這個居然很奇怪的返回了“研發、產??”。

難道是我的打開方式不對,怎么會返回亂碼呢。

經過一番測試,發現一個很有趣的問題。

<?php
echo trim('abacabb', 'ab');   //print 'c'

原本以為這個會返回acabb的,但是居然只返回了c。這就是對trim函數的誤解了。

其實這個在官方說明文檔的Example是有的,只是我沒注意看而已。

trim會循環去掉字符串首位存在的字符。如上面的例子,則執行過程如下:

字符串abacabb會從下標0開始循環,如果存在ab中的字符就去掉,一直到沒有就停止循環。

所以執行為:

  • 循環a存在字符串ab中,去掉,剩下bacabb

  • 循環b存在字符串ab中,去掉,剩下acabb

  • 循環a存在字符串ab中,去掉,剩下cabb

  • 循環c不存在字符串ab中,停止循環,所以去掉首字符就剩下:cabb。

但是trim是過濾首尾字符,所以還會從末尾循環去掉。

  • 循環b存在字符串ab中,去掉,剩下cab,

  • 循環b存在字符串ab中,去掉,剩下ca,

  • 循環a存在字符串ab中,去掉,剩下c,

  • 循環c不存在字符串ab中,停止循環,所以去掉末端字符就剩下:c。

所以整個結束后,abacabb就剩下了c了。看到這里對trim函數有所了解了吧。

好了,說回亂碼的問題,為什么會出現返回亂碼的情況呢。

這是因為在PHP中,字符串函數默認都不是 multibyte-safe 的。如果需要 multibyte-safe 則需要使用mb_系列的函數。

“、”的十六進制碼為0xe3 0x80 0x81,對于不是 multibyte-safe 的函數會把它當做三個字符。

而“品”的十六進制碼為0xe5 0x93 0x81。這里最后一個0x81剛好符合了,被過濾了。所以才會導致出現亂碼的情況。

ok,問題找到了,trim沒有mb函數,但是我們可以自己封裝一個。Function mb_trim。

PS:用了trim好久了,但是一直沒有真正了解。看官方文檔還是很重要的。

到此,相信大家對“怎么解決PHP+trim亂碼問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

神木县| 宣化县| 通江县| 剑河县| 光山县| 东兰县| 灵川县| 竹山县| 红桥区| 青海省| 重庆市| 丹巴县| 黄浦区| 永靖县| 东莞市| 丰镇市| 尼玛县| 三亚市| 鄯善县| 齐齐哈尔市| 眉山市| 龙胜| 慈溪市| 荥阳市| 象州县| 温泉县| 金平| 大丰市| 罗田县| 淮阳县| 云安县| 漳州市| 玉山县| 明光市| 金山区| 望都县| 图片| 申扎县| 神木县| 五华县| 民县|