如何在PHP中将逗号和“和”与preg_split匹配

时间:2013-12-03 14:24:31

标签: php regex split preg-split

我有这个字符串:

Rosemary J. Harris $^{1}$, Vladislav Popkov $^{2}$ and Gunter M. Sch\"utz $^{3,}$*

我会谎言用逗号(,)或“和”字符串分割它。

所以,结果应该是:

[0] -> Rosemary J. Harris $^{1}$
[1] -> Vladislav Popkov $^{2}$
[2] -> Gunter M. Sch\"utz $^{3,}$*

我试过这个:

$splitAuthors = preg_split('/[, ]+[ and ]/', $authors);

返回:

[0] -> Rosemary J. Harris $^{1}$
[1] -> Vladislav Popkov $^{2}$
[2] -> nd Gunter M. Sch\"utz $^{3,}$*

最后一个数组项中有“nd”。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

不要使用字符类来使用或分隔符

这应该给你正确的输出:

preg_split("/, | and /",$data)

提供以下输出:

Array
(
    [0] => Rosemary J. Harris $^{1}$
    [1] => Vladislav Popkov $^{2}$
    [2] => Gunter M. Sch\"utz $^{3,}$*
)

答案 1 :(得分:1)

[]定义字符类。它们匹配SINGLE字符,其中该字符可以是类中的任何字符。因此,您需要在字符串中查找该位置包含空格,and的位置。它不是在寻找世界“和”,两边都有空格。您可能需要( and )