中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么解決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

临澧县| 玛纳斯县| 北海市| 阳西县| 哈密市| 昌江| 开江县| 自贡市| 高平市| 广德县| 上杭县| 乐东| 平原县| 仙居县| 临城县| 保山市| 登封市| 阿尔山市| 丰都县| 三门县| 平乡县| 柳林县| 滨州市| 麻江县| 视频| 东丰县| 桂东县| 清流县| 绩溪县| 永清县| 绥棱县| 原平市| 海晏县| 隆林| 湘乡市| 东山县| 门头沟区| 仁布县| 沁阳市| 吉隆县| 福州市|