PHP REGEX按不同标准分开

时间:2011-12-15 21:30:49

标签: php

我正在尝试按不同标准分隔一些字符串,但我无法获得所需的结果。

以下是3个例子:

$ppl[0] = "Balko, Vlado     \"Panelбk\" (2008) {Byt na tretom (#1.55)}";
$ppl[1] = "'Abd Al-Hamid, Ja'far    A Two Hour Delay (2001)";
$ppl[2] = "'t Hoen, Frans       De reьnie (1963) (TV)";

我目前正在使用它进行最后2:

$pattern = '#,|\t|\(#'

但我会得到空的空间。 结果:

Array ( [0] => 'Abd Al-Hamid [1] => Ja'far [2] => A Two Hour Delay [3] => 2001) )
Array ( [0] => 't Hoen [1] => Frans [2] => [3] => De reünie [4] => 1963) [5] => TV) ) 

至于第一个表达式,我使用了另一个模式,但我仍然得到空格。有什么想法吗?

编辑: 谢谢这确实有帮助。我尝试在第一个字符串上使用修改版本:

$pattern4 = '#[",\t]+|[{}]+|[()]+#';

但是我仍然得到一个空白的地方:

Array ( [0] => Balko [1] => Vlado [2] => Panelák [3] => [4] => 2008 [5] => [6] => Byt na tretom [7] => #1.55 [8] => [9] => )

我该怎么办?我认为“和括号引起了问题,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

我猜测你在第二个和第三个示例字符串中有两个选项卡作为分隔符。 (在这里看不到,SO编辑器将它们转换为空格。)

但在这种情况下你可以稍微调整你的正则表达式:

 $pattern = '#,|\t+|\(#'

甚至更简单:

 $pattern = '#[,\t(]+#'

而交替使用btw,只是在结果数组上应用array_filter()来删除空条目。