程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> PHP 正則表達式分割 preg

PHP 正則表達式分割 preg

編輯:PHP基礎知識
 

preg_split()

preg_ split() 函數用於正則表達式分割字符串。

語法:

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

返回一個數組,包含 subject 中沿著與 pattern 匹配的邊界所分割的子串。

參數說明: 參數 說明 pattern 正則表達式 subject 需要匹配分割的對象 limit 可選,如果指定了 limit ,則最多返回 limit 個子串,如果 limit 是 -1,則意味著沒有限制,可以用來繼續指定可選參數 flags flags 設定 limit 為 -1 後可選,可以是下列標記的任意組合(用按位或運算符 | 組合):

 

  1. PREG_SPLIT_NO_EMPTY:preg_split() 只返回非空的成分
  2. PREG_SPLIT_DELIM_CAPTURE:定界符模式中的括號表達式也會被捕獲並返回
  3. PREG_SPLIT_OFFSET_CAPTURE:對每個出現的匹配結果也同時返回其附屬的字符串偏移量。注意這改變了返回的數組的值,使其中的每個單元也是一個數組,其中第一項為匹配字符串,第二項為其在 subject 中的偏移量。

例子 1 :

<?php
$str = "php mysql,apache ajax";
$keywords = preg_split("/[s,]+/", $str);
print_r($keywords);
?>

輸出結果為:

Array
(
    [0] => php
    [1] => mysql
    [2] => apache
    [3] => ajax
)

例子 2 :

<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>

輸出結果為:

(
    [0] => s
    [1] => t
    [2] => r
    [3] => i
    [4] => n
    [5] => g
)

例子 3 :

<?php
$str = "php mysql,apache ajax";
$keywords = preg_split("/[s,]+/", $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($keywords);
?>

輸出結果為:

Array
(
    [0] => Array
        (
            [0] => php
            [1] => 0
        )

    [1] => Array
        (
            [0] => mysql
            [1] => 4
        )

    [2] => Array
        (
            [0] => apache
            [1] => 10
        )

    [3] => Array
        (
            [0] => ajax
            [1] => 17
        )
)

split()

split() 函數同 preg_split() 類似,用正則表達式將字符串分割到數組中,返回一個數組,但推薦使用 preg_split() 。

語法:

array split( string pattern, string string [, int limit] )

如果設定了 limit ,則返回的數組最多包含 limit 個單元,而其中最後一個單元包含了 string 中剩余的所有部分。如果出錯,則返回 FALSE。

例子:

<?php
$date = "2008-08-08 20:00:01";
print_r( split('[- :]', $date) );
?>

輸出結果:

Array
(
    [0] => 2008
    [1] => 08
    [2] => 08
    [3] => 20
    [4] => 00
    [5] => 01
)

提示

  1. 如果不需要正則表達式的功能,可以選擇使用更快(也更簡單)的替代函數如 explode() 或 str_split() 。
  2. split() 函數對大小寫敏感,如果在匹配字母字符時忽略大小寫的區別,請使用用法相同的 spliti() 函數
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved