2011-07-25 81 views
1

一個字符串我可以分割使用preg_split逗號一個字符串,如劈裂在PHP

$words = preg_split('/[,]/', $string); 

如何使用一個點,一個空格和分號與任何這些分割字符串?

PS。我在PHP preg_split頁面找不到任何相關示例,這就是爲什麼我問。

回答

7

嘗試這種情況:

<?php 

$string = "foo bar baz; boo, bat"; 

$words = preg_split('/[,.\s;]+/', $string); 

var_dump($words); 
// -> ["foo", "bar", "baz", "boo", "bat"] 

的模式說明

[]是一個字符類,字符類由多個字符和匹配到其中一個角色s

.匹配.字符,這個不需要轉義裏面的字符類。雖然不在角色等級中時需要逃脫,但.表示「匹配任何角色」。

\s比賽的空白

;拆就分號,這需要不進行轉義,因爲它並沒有特殊的含義。

+末確保拆分後的字符空格不顯示爲

+0

感謝您的所有解釋:) – Roman

+2

@chh:點('.')只是一個字符類中的一個點,不需要轉義。 –

+0

噢,謝謝。我想,逃避正則表達式特殊字符是一種習慣:-) – chh

1
$words = preg_split('/[\,\.\ ]/', $string); 
1

只是這些字符添加到您的表達

$words = preg_split('/[;,. ]/', $string); 

編輯:感謝Igoris Azanovas,不需要在字符類逃逸點;)

+1

無需逃避匹配。在括號內 –

3

的例子在那裏,不字面上也許,但分割有多個選項分隔符

$words = preg_split('/[ ;.,]/', $string); 
0
$words = preg_split('/[,\.\s;]/', $string); 
2

這樣的事情?

<?php 
$string = "blsdk.bldf,las;kbdl aksm,alskbdklasd"; 
$words = preg_split('/[,\ \.;]/', $string); 

print_r($words); 

結果:

Array 
(
    [0] => blsdk 
    [1] => bldf 
    [2] => las 
    [3] => kbdl 
    [4] => aksm 
    [5] => alskbdklasd 
) 
+0

但是,如果沒有**點(。),分號(;),空格或逗號(,)**,那麼應該如何處理。 –

+0

用您的具體問題打開另一個問題。這個問題特別提到了點,分號,空格或逗號。 – ariefbayu