我的名字模式如下:
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.
)。问题是我不能只将它限制为小写,因为我传入的数据非常不一致,所以我不能依赖它。
答案 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正确指出的那样,点需要逃避。