2012-02-11 86 views
0
$str = "X-Storage-Url: https://pathofanapi"; 

我想將其拆分成一個數組(「X-Storage-Url」,「https:// pathofanapi」)。如何在第一個冒號處拆分字符串

有人能告訴我這個正則表達式嗎?正則表達式一直是我的弱點。

謝謝。

+0

你不需要爲這個 – Gordon 2012-02-11 09:30:22

+0

無需正則表達式正則表達式,就在爆炸方法。 – 2012-02-11 09:43:25

回答

3
$array = array_map('trim', explode(':', $str, 2)); 
+2

使用爆炸函數的第三極限參數可能是最安全的,這樣你就不依賴於那裏的空間。 – ArthurGuy 2012-02-11 09:41:05

+0

「每個標題字段由一個名稱後跟一個冒號(」:「)和字段值組成[...]字段值** MAY **前面有任意數量的LWS,儘管一個SP是首選「。 [RFC 2616](http://tools.ietf.org/html/rfc2616#section-4.2)如果HTTP-Header在'name'和'field value'之間有多於或少於一個空格,這將失敗。 – Saxoier 2012-02-11 09:46:06

0

正如之前所說,explode是做這份工作的正確工具。

但是,如果你真的想要一個正則表達式,這裏是一個辦法做到:

用的preg_match:

$str = "X-Storage-Url: https://pathofanapi"; 
preg_match('/^([^:]+):\s*(.*)$/', $str, $m); 
print_r($m); 

輸出:

Array 
(
    [0] => X-Storage-Url: https://pathofanapi 
    [1] => X-Storage-Url 
    [2] => https://pathofanapi 
) 

或使preg_split;

$arr = preg_split('/:\s*/', $str, 2); 
print_r($arr); 

輸出:

Array 
(
    [0] => X-Storage-Url 
    [1] => https://pathofanapi 
) 
相關問題