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)算符 | 組合):
|
這樣,我們就有了按換行符和分號(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)入論壇