最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP?trim函數(shù)對(duì)多字節(jié)字符的使用限制實(shí)例探究

 更新時(shí)間:2024年01月12日 08:58:14   作者:沈唁  
這篇文章主要為大家介紹了PHP?trim函數(shù)對(duì)多字節(jié)字符的使用限制實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

先來判斷下這段代碼的輸出是否一致?

$string = '沈唁 ';
var_dump(trim($string));
var_dump(preg_replace('/^[\s\0]+|[\s\0]+$/u', '', $string));

如果你覺得是一致的,那么就是大錯(cuò)特錯(cuò)了。

在日常工作中,經(jīng)常需要處理字符串。其中一種常用的情況是,需要?jiǎng)h除字符串兩端的空白字符,這就是 trim() 函數(shù)原本的作用。

但是標(biāo)準(zhǔn)的 trim() 函數(shù)不能處理多字節(jié)字符。

什么是trim()函數(shù)?

在PHP中, trim() 函數(shù)用于刪除字符串的開頭和結(jié)尾的空白字符。默認(rèn)情況下,這些字符包括:

  • "\0" - NULL
  • "\t" - 制表符
  • "\n" - 換行
  • "\v" - 垂直制表符
  • "\r" - 回車
  • " " - 空格

mbstring 擴(kuò)展

在很多語言中,每個(gè)必要字符都能一對(duì)一映射到 8 bit 的值,但也有一些語言需要非常多的字符來書面通訊,以至于它們的編碼范圍不能僅僅包含在一個(gè)字節(jié)里。

開發(fā)多字節(jié)字符編碼方案是為了在基于字節(jié)的常規(guī)編碼系統(tǒng)中表達(dá)超過 256 個(gè)字符。

在使用trimsplit、splice 等等操作多字節(jié)編碼的字符串的時(shí)候,特別需要注意,由于在這種編碼方案下,兩個(gè)或多個(gè)連續(xù)字節(jié)可能只表達(dá)了一個(gè)字符,所以需要使用專門的函數(shù)。 否則,你可能會(huì)得到一個(gè)以亂碼的字符串結(jié)尾。

而 mbstring 提供了針對(duì)多字節(jié)字符串的函數(shù),能夠幫開發(fā)者處理 PHP 中的多字節(jié)編碼。

mbstring 擴(kuò)展的使用和普通字符串操作函數(shù)一致,而且僅僅需要加上mb_前綴即可。

類似于:

  • split => mb_split
  • strlen => mb_strlen
  • substr => mb_substr

以此類推,trim 是不是可以直接改為調(diào)用mb_trim?

答案是也不是。因?yàn)槟憧赡軙?huì)得到一個(gè)錯(cuò)誤:

PHP Fatal error:  Uncaught Error: Call to undefined function mb_trim()

mb_trimmb_ltrim 和 mb_rtrim

從 2022 年 8 月份就有人在 php-src 的 issue 進(jìn)行了反饋,這三個(gè)函數(shù)也是前不久剛剛通過 RFC,合并到 PHP 內(nèi)核中新增的。

https://github.com/php/php-src/commit/a80b6d7b99ae885cb450a563a788f57917cef74e

function mb_trim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}"): string

function mb_ltrim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}", ?string $encoding = null): string

function mb_rtrim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}\u{2001}\u{2002}\u{2003}\u{2004}\u{2005}\u{2006}\u{2007}\u{2008}\u{2009}\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{0085}\u{180E}", ?string $encoding = null): string

所以雖然 8.3 剛發(fā)布,但是 8.3 中確實(shí)沒有這三個(gè)函數(shù),可能需要在 8.3.1 中才能使用了。

不過 PHP 足夠靈活,使我們能夠根據(jù)需要?jiǎng)?chuàng)建自定義的函數(shù),如多字節(jié) mb_trim() 函數(shù)。

if (!function_exists('mb_trim')) {
    function mb_trim($string)
    {
        return preg_replace('/^[\s\0]+|[\s\0]+$/u', '', $string);
    }
}

以上就是PHP trim函數(shù)對(duì)多字節(jié)字符的使用限制實(shí)例探究的詳細(xì)內(nèi)容,更多關(guān)于PHP trim限制多字節(jié)字符的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PHP面向?qū)ο蠓治鲈O(shè)計(jì)的61條軍規(guī)小結(jié)

    PHP面向?qū)ο蠓治鲈O(shè)計(jì)的61條軍規(guī)小結(jié)

    你不必嚴(yán)格遵守這些原則,違背它們也不會(huì)被處以宗教刑罰。但你應(yīng)當(dāng)把這些原則看成警鈴,若違背了其中的一條,那么警鈴就會(huì)響起 。
    2010-07-07
  • php函數(shù)實(shí)現(xiàn)判斷是否移動(dòng)端訪問

    php函數(shù)實(shí)現(xiàn)判斷是否移動(dòng)端訪問

    本文給大家分享的是一則php判斷是否移動(dòng)端訪問的函數(shù),是之前收藏的,這里發(fā)出來,推薦給小伙伴們。
    2015-03-03
  • PHP中l(wèi)ist方法用法示例

    PHP中l(wèi)ist方法用法示例

    這篇文章主要介紹了PHP中l(wèi)ist方法用法,結(jié)合實(shí)例形式分析了list方法實(shí)現(xiàn)將數(shù)組值賦給變量的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • PHP中each與list用法分析

    PHP中each與list用法分析

    這篇文章主要介紹了PHP中each與list用法,結(jié)合實(shí)例形式分析了each及l(fā)ist函數(shù)的使用技巧,并舉例分析了each結(jié)合list函數(shù)實(shí)現(xiàn)數(shù)組遍歷的技巧,需要的朋友可以參考下
    2016-01-01
  • 用php來改寫404錯(cuò)誤頁讓你的頁面更友好

    用php來改寫404錯(cuò)誤頁讓你的頁面更友好

    404錯(cuò)誤,很多人都知道,如果要訪問的url不存在的時(shí)候就讀取顯示這個(gè)頁面;以往在處理404寫幾行字,有心人對(duì)其稍加美化,首先我來說明一下我的404究竟都能幫我做哪些事情以及PHP如何來改寫你的404錯(cuò)誤頁
    2013-01-01
  • 通過PHP實(shí)現(xiàn)獲取訪問用戶IP

    通過PHP實(shí)現(xiàn)獲取訪問用戶IP

    這篇文章主要介紹了通過PHP實(shí)現(xiàn)獲取訪問用戶IP,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • php判斷變量類型常用方法

    php判斷變量類型常用方法

    php 常用的判斷變量的函數(shù)有下列幾個(gè)gettype()、is_array()、is_bool()、is_float()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_scalar() 和 is_string()
    2012-04-04
  • php限制ip地址范圍的方法

    php限制ip地址范圍的方法

    這篇文章主要介紹了php限制ip地址范圍的方法,涉及php操作IP地址的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • thinkphp如何獲取客戶端IP

    thinkphp如何獲取客戶端IP

    這篇文章主要介紹了thinkphp如何正確獲取客戶端IP,除了使用內(nèi)置get_client_ip函數(shù),還有沒有其他方法?請(qǐng)閱讀下文揭曉答案。
    2015-11-11
  • php偽靜態(tài)驗(yàn)證碼不顯示的解決方案

    php偽靜態(tài)驗(yàn)證碼不顯示的解決方案

    在本篇文章里小編給大家整理的是關(guān)于php偽靜態(tài)驗(yàn)證碼不顯示怎么解決的相關(guān)知識(shí)點(diǎn)內(nèi)容,以后需要的朋友們參考學(xué)習(xí)下。
    2019-09-09

最新評(píng)論

祁东县| 赞皇县| 石泉县| 汉源县| 云安县| 若尔盖县| 厦门市| 右玉县| 七台河市| 洛扎县| 定南县| 台前县| 密云县| 陵川县| 岳阳县| 广灵县| 哈巴河县| 扶沟县| 寻甸| 彭泽县| 车险| 长宁区| 化隆| 海原县| 遵化市| 宁阳县| 林甸县| 凤山县| 西安市| 黄山市| 阳谷县| 射洪县| 延边| 沭阳县| 乐昌市| 满洲里市| 留坝县| 易门县| 鹤壁市| 清新县| 惠东县|