1

文字列を分割したい。

  • 参照番号、名前、都市で構成されています

例: 2E4 766 06 7982 647 5 ジョースフ J サンチェス ズニ

  • 2E4 766 06 7982 647 5 は参照番号です。
  • ジョースフ・J・サンチェスの名前
  • ズニは都市です

Name と City を分けるのは難しいですが、Ref No と Name(NAme City) を分けようとしています。正規表現を作成してテストしました: http://www.switchplane.com/awesome/preg-match-regular-expression-tester/?pattern=%22%5Ba-zA-Z%5D%5Ba-z% 5Cs.%5D%22&subject=2E4+766+06+7982+647+5+Joesph+J+Sanchez+Zuni

名前は常に大文字で始まり、その後に小さなアルファベットまたはスペースまたはドットが続くと考えて作成しました

しかし、私が使用するとき

$keywords = preg_split("[a-zA-Z][a-z\s.]", $strBreak['cust_ref']);

うまくいきません。

ガイドしてください。

4

1 に答える 1

1

正規表現:

'#(?P<ref>.+\d) (?P<name>\w+ [A-Z ]*\w+) (?P<city>.+)#'
  • 最初に、名前の前にある 1 桁で終わるものをキャプチャします。参照番号の例/形式がないため、これが正しいかどうかはわかりません。これが正しくない場合は、「.+」と「\d」の間のスペースを削除してください。キー 'ref' を配列に格納します。
  • 0 個以上のミドル ネームを持つ名前をキャプチャします。キー 'name' を配列に格納します。
  • 名前の後のすべてを都市名としてキャプチャします。'city' をキーにして配列に格納します。

これを試して:

$vars = array(
    '2E4 766 06 7982 647 5 Joesph Sanchez Zuni',
    '2E4 766 06 7982 647 5 Joesph J Sanchez Zuni',
    '2E4 766 06 7982 647 5 Joesph J G Sanchez Zuni',
    '2E4 766 06 7982 647 5 Joesph Sanchez Los Angeles',
    '2E4 766 06 7982 647 5 Joesph J Sanchez Los Angeles',
    '2E4 766 06 7982 647 5 Joesph J G Sanchez Los Angeles',
    '2E4 766 06 7982 647 5 Joesph Sanchez St. Morel',
    '2E4 766 06 7982 647 5 Joesph J Sanchez St. Morel',
    '2E4 766 06 7982 647 5 Joesph J G Sanchez St. Morel',
);
$matches = array();

foreach ($vars as $var) {
    if (preg_match('#(?P<ref>.+ \d) (?P<name>\w+ [A-Z ]*\w+) (?P<city>.+)#', $var, $matches)) {
        echo 'Ref: ', $matches['ref'], '. Name: ', $matches['name'], '. City: ', $matches['city'], "\n";
    } else {
        echo "No match for $var\n";
    }
}

結果:

Ref: 2E4 766 06 7982 647 5. Name: Joesph Sanchez. City: Zuni
Ref: 2E4 766 06 7982 647 5. Name: Joesph J Sanchez. City: Zuni
Ref: 2E4 766 06 7982 647 5. Name: Joesph J G Sanchez. City: Zuni
Ref: 2E4 766 06 7982 647 5. Name: Joesph Sanchez. City: Los Angeles
Ref: 2E4 766 06 7982 647 5. Name: Joesph J Sanchez. City: Los Angeles
Ref: 2E4 766 06 7982 647 5. Name: Joesph J G Sanchez. City: Los Angeles
Ref: 2E4 766 06 7982 647 5. Name: Joesph Sanchez. City: St. Morel
Ref: 2E4 766 06 7982 647 5. Name: Joesph J Sanchez. City: St. Morel
Ref: 2E4 766 06 7982 647 5. Name: Joesph J G Sanchez. City: St. Morel
于 2013-10-02T14:51:31.997 に答える