在一個層面來看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 文件.
新聞熱點
疑難解答