2012-12-31 66 views
-2

我有一個字符串根據php中的數字來分割字符串數組?

$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01" 

我想通過數字來拆分此字符串,如:「101WE3P-1AN ......」應該是第一要素,‘104TUA ......’應該是第二個元素?

有人給我寫了下面的代碼在my previous question preg_match to match substring of three numbers consecutively?一些小分鐘前:

$result = preg_split('/^\d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 

基線是我想匹配的3 digited號,接着是沒有任何資本的,其次是任何東西,包括\ t?提前致謝。

+2

你能否澄清一下究竟** **應提取後'$ str'的​​結果呢?目前尚不清楚對我..(太多'...') – j0k

+0

將它分成$海峽[0],$海峽[1] .. – Aditya

+0

這不是問題。讓簡單。以'$ str =「a b c d」'。如果你想通過空格分割這個字符串,這意味着你想要'a','b','c','d'。對?那麼最後你想要**? – j0k

回答

5

你可以告訴preg_split()在後面是三個數字用lookahead assertion在字符串中的任何一點分裂。

$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"; 
$result = preg_split('/(?=\d{3})/', $str, -1, PREG_SPLIT_NO_EMPTY); 

var_export($result); 

給出了以下陣列:

array (
    0 => '101WE3P-1An Electrically-Small', 
    1 => '104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01', 
) 

PREG_SPLIT_NO_EMPTY標誌的使用,因爲該字符串的最開始也是一個點,有三個數字,所以空分發生在這裏。我們可以改變正則表達式,不要在字符串的一開始就分裂,但這會使得一眼就難以理解,而國旗非常清晰。

+0

尼斯一個,你能告訴我爲什麼你使用var_export? – Aditya

+0

@salathe:對; – hakre

+0

@Aditya向你展示結果數組,沒有其他原因。 – salathe

-1

我想匹配,而不是分裂

preg_match_all('/^(\d{3}.*?)*$/', $str, $matches); 
var_dump($matches); 

似乎得到正確的結果,爲您的樣品