preg_split()正则表达姓名的正则表达式

时间:2012-09-18 10:35:06

标签: php regex preg-split

我的名字模式如下:

F。 O. O. Bar
F. Oobar
F. O. Obar

我目前正在尝试开发一个正则表达式,允许我根据其中一个名称在名字中拆分名称,可能是姓名缩写和姓氏。

foreach($authors as $author) {
    $arr = preg_split("/([a-zA-Z]. )+/", $author, -1, PREG_SPLIT_DELIM_CAPTURE);
    //Do stuff with $arr
}

但是,这也会分割Foo. Bar(或准确o.)。问题是我不能只将它限制为小写,因为我传入的数据非常不一致,所以我不能依赖它。

2 个答案:

答案 0 :(得分:3)

.必须转义。

$arr = preg_split("/([a-zA-Z]\. )+/", $author, PREG_SPLIT_DELIM_CAPTURE);

答案 1 :(得分:1)

你的意思是你只想在点之前允许一个字母?使用单词边界来确保:

$arr = preg_split("/\b([a-zA-Z]\. )+/", $author, PREG_SPLIT_DELIM_CAPTURE);

另外,正如wroniasty正确指出的那样,点需要逃避。