0

我有一个看起来像这样的名称模式:

FOO Bar
F. Oobar
FO Obar

我目前正在尝试开发一个正则表达式,它可以让我根据其中一个拆分名字,也许是首字母和姓氏。

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

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

4

2 回答 2

3

.必须逃脱。

$arr = preg_split("/([a-zA-Z]\. )+/", $author, PREG_SPLIT_DELIM_CAPTURE);
于 2012-09-18T10:38:06.603 回答
1

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

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

此外,正如错误正确指出的那样,点需要转义。

于 2012-09-18T10:37:16.937 回答