0

次のような名前パターンがあります。

FOO バー
F. ウーバー
FOオーバー

私は現在、これらのいずれかに従って、名、おそらくイニシャルと姓で名前を分割できる正規表現を開発しようとしています。

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

ドットの前に1文字だけ許可したいということですか?これを確実にするために単語境界を使用します。

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

また、wroniasty が正しく指摘したように、ドットはエスケープする必要があります。

于 2012-09-18T10:37:16.937 に答える