在一個層面來看php中的explode與split函數沒什麼區別都用來把字符以什麼分開成數組了,但仔細看一下explode與split還是有區別的,下面我來給大家介紹一下。
首先來看下兩個方法的定義:
函數原型:array split (string $pattern, string $string [, int $limit])
函數原型:array explode ( string $separator, string $string [, int $limit])
初看沒有啥差別,貌似功能都一樣。我就犯了這個錯誤。 請注意兩個函數的第一個參數string $pattern和string separator,一個是$pattern說明是正則字符串,一個是$separator是普通字符串。 看下面的代碼:
代碼如下 復制代碼$test = end(explode('.', 'abc.txt'));
echo $test;//output txt
換成:
$test1 = end(split('.','abc.txt'));
echo $test1;//no output
用split的正確做法是:加轉義符號
$test1 = end(split('.','abc.txt'));
echo $test1;//output txt
分析:"." 符號是正則表達式的關鍵字所以split無效,而explode有效。
解析可能用斜線,點,或橫線分割的日期:
例子 2. split() 例子
<?php
// 分隔符可以是斜線,點,或橫線
$date = "04/30/1973 ";
list($month, $day, $year) = split ( '[/.-] ', $date);
echo "Month: $month; Day: $day; Year: $year <br /> n ";
?>
想仿效 Perl 中類似的 @chars = split( ' ', $str) 行為,請參考 preg_split() 函數中的例子。
注意 pattern 是一個正則表達式。如果想要用的分割字符是正則表達式中的特殊字符,要先將其轉義。如果覺得 split()(或其它任何 regex 函數)行為古怪的話,請閱讀包含在 PHP 發行包中 regex/ 子目錄下的 regex.7 文件。該文件是手冊頁面格式