PHP preg_split 函數

PHP preg_split 函數是傳統 split 函數的進化版,自從 php 5.3.0 開始就不建議使用老舊的 split 函數,應該改用新的 PHP preg_split 函數,這個新的 preg_split 函數比舊版的 split 函數還多了一個參數可以使用,讓 PHP 程式設計師可以額外設定 preg_split 函數是否要限定返回非空白的部份,不過這個參數是選擇項目,不一定要使用,使用 PHP preg_split 函數還是需要一點正規表示的觀念與技巧,如果只是單純的要切割一個字串,可以使用explode 函數比較簡單,無論是 preg_split 函數還是 explode 函數,在切割完字串後,都是返回一個 PHP Array 陣列

PHP preg_split 函數語法
array preg_split ( string $pattern , string $subject , int $limit , int $flags )
誠如第一段所說,PHP preg_split 函數比舊版的 split 函數多了一個參數,所以總共有四個參數可以設定,從左邊開始的第一個參數 $pattern 是要使用的正規表示語法,必要項目,第二個參數 $subject 是要被切割的字串,必要項目,第三個參數 $limit 則是用來設定要切割為多少個部份,剩餘的部份會在一起。第四個參數就是新增的,有以下幾種設定法。
  • PREG_SPLIT_NO_EMPTY - preg_split - 函式只會返回非空白的部分。
  • PREG_SPLIT_DELIM_CAPTURE - preg_split - 函式會將字串中的正規表達式一起返回。(PHP 4.0.5 新增功能)
  • PREG_SPLIT_OFFSET_CAPTURE - preg_split - 函式會將每個返回增加字串的偏移量。(PHP 4.3.0 新增功能)
第四個參數目的是要獲得特別的返回結果,有需要的情況才需使用。

PHP preg_split 函數範例
<?php
//根據空格切開
$NewString1 = preg_split("/[\s,]+/", "Today is holiday.");
print_r($NewString1);
echo '<br><br>';
//切成三個部份
$NewString2 = preg_split('//',"Today is holiday.",3);
print_r($NewString2);
echo '<br><br>';
//不限至切割部份
$NewString3 = preg_split('//',"Today is holiday.");
print_r($NewString3);
?>
範例的切割結果
Array ( [0] => Today [1] => is [2] => holiday. )

Array ( [0] => [1] => T [2] => oday is holiday. )

Array ( [0] => [1] => T [2] => o [3] => d [4] => a [5] => y [6] => [7] => i [8] => s [9] => [10] => h [11] => o [12] => l [13] => i [14] => d [15] => a [16] => y [17] => . [18] => )
範例總共有三筆 PHP preg_split 函數的切割結果,第一次切割時,我們使用了「/[\s,]+/」這樣的正規寫法,表示要從字串的空白處切割開來,第二次切割時使用兩個斜線「//」表示我們要將字元切開並限定只切成三個部份,第一個被切割出來並存放在陣列內的會是空白字元,這是 PHP preg_split 函數的預設效果,接著是英文字母 T,第三個部份則是剩餘的所有部份。

第三次使用 PHP preg_split 函數時,我們就沒有使用參數去限定要切割成幾個部份,所以 PHP preg_split 函數就把整個字串的每個字元都切割開來,全部儲存進 PHP Array 陣列中,可以注意到第一個與最後一個被切割出來的部份是空白字元。

更多字串切割函數
© Copyright webtech.tw Since 2010