2011-07-25 84 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