五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > PHP中preg_split函數(shù)分割換行字符串與split explode的區(qū)別和性能

PHP中preg_split函數(shù)分割換行字符串與split explode的區(qū)別和性能

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):868    更新時(shí)間:2018-07-26 09:48   參與評(píng)論

preg_ split() 函數(shù)用于正則表達(dá)式分割字符串。它與split()explode()函數(shù)的主要區(qū)別是:

  • split()函數(shù):用正則表達(dá)式來(lái)把字符串拆分并返回?cái)?shù)組,如果出錯(cuò)則返回false。

  • preg_split() 函數(shù):用 Perl 兼容正則表達(dá)式語(yǔ)法,通常比 split() 更快。

  • explode()函數(shù):使用一個(gè)字符串分割另一個(gè)字符串,通常比以上兩個(gè)函數(shù)更快。


    PHP5.3 split() 不建議使用的原因: PHP 5.3.0 之后的regex, 希望使用PCRE 的規(guī)格, POSIX Regex 都不建議使用了(統(tǒng)一Regex, 避免規(guī)格太多) PHP split() 替代方案 * 需要regex 的split, 可用preg_split() 代替 * 不需要regex, 只要要快速分割固定的字串, 可用explode() 代替. (速度會(huì)比需要regex 的快很多)

preg_ split() 函數(shù)的語(yǔ)法是:

array preg_split( string pattern, string subject [, int limit [, int flags]] )

參數(shù)說(shuō)明:

參數(shù)說(shuō)明
pattern正則表達(dá)式
subject需要匹配分割的對(duì)象
limit可選,如果指定了 limit ,則最多返回 limit 個(gè)子串,如果 limit 是 -1,則意味著沒(méi)有限制,可以用來(lái)繼續(xù)指定可選參數(shù) flags
flags設(shè)定 limit 為 -1 后可選,可以是下列標(biāo)記的任意組合(用按位或運(yùn)算符 | 組合):


  1. PREG_SPLIT_NO_EMPTY:只返回非空的成分

  2. PREG_SPLIT_DELIM_CAPTURE:定界符模式中的括號(hào)表達(dá)式也會(huì)被捕獲并返回

  3. PREG_SPLIT_OFFSET_CAPTURE:對(duì)每個(gè)出現(xiàn)的匹配結(jié)果也同時(shí)返回其附屬的字符串偏移量。注意這改變了返回的數(shù)組的值,使其中的每個(gè)單元也是一個(gè)數(shù)組,其中第一項(xiàng)為匹配字符串,第二項(xiàng)為其在 subject 中的偏移量。

這樣,我們就有了換行符分號(hào)分割字符串的方法了。

$result = preg_split('/[;\r\n]+/s', $value);   // 返回?cái)?shù)據(jù)保存在$result數(shù)組中

其中:

  • \r 表示:回車符(ACSII:13 或0x0d),就是我們常說(shuō)的硬回車。

  • \n 表示:換行(ACSII:10 或0x0a),就是我們常說(shuō)的軟回車。

例子 1. preg_split() 例子

<?php

// split the phrase by any number of commas or space characters,// which include " ", \r, \t, \n and\f

$keywords = preg_split ("/[\s,]+/", "hypertext language, programming");

?>


例子 2. 將字符串分割成字符

<?php

$str = 'string';

$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

print_r($chars);

?>


例子 3. 將字符串分割為匹配項(xiàng)及其偏移量

<?php

$str = 'hypertext language programming';

$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);

print_r($chars);?>

本例將輸出:

Array (

    [0] => Array (

                             [0] => hypertext

                             [1] => 0

                        )

    [1] => Array (

                             [0] => language

                             [1] => 10

                         )

    [2] => Array (

                             [0] => programming

                             [1] => 19

                         ) 

         )



如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (868人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)