PHP 7.1.5を実行すると、長い文字列が出力され、preg_match_all
というグループになっています。各出力グループを新しい配列key => value
に取得しようとしています。PHP preg_match_all大きな文字列をグループ化してキーを増やす=>値
$string = (
Name: John Doe
Address: 123 Main St
City: Chicago
State: IL
Zip: 60021
Name: Jane Smith
Address: 123 State Ave
City: Boston
State: MA
Zip: 02501
Name: John Doe
Address: 123 Main St
City: Chicago
State: IL
Zip: 60021
)
preg_match_all('!(Name.*|Address.*|City.*|State.*|Zip.*)!', $string, $results);
これはこれは、すべての1つのキーの下$results
配列に格納されています、しかし、情報を抽出します。たとえば、私はこのような長い文字列を持っています。代わりに、この出力で:
Array (
0 =>
[0] => Name: John Doe
[1] => Address: 123 Main St
[2] => City: Chicago
[3] => State: IL
[4] => Zip: 60021
[5] => Name: Jane Smith
[6] => Address: 123 State Ave
[7] => City: Boston
[8] => State: MA
[9] => Zip: 02501
[10] => Name: John Doe
[11] => Address: 123 Main St
[12] => City: Chicago
[13] => State: IL
[14] => Zip: 60021
)
私はすべてのキャプチャグループの配列で、この出力を必要とする:
Array (
[0] =>
[0]Name: John Doe
[1]Address: 123 Main St
[2]City: Chicago
[3]State: IL
[4]Zip: 60021
[1] =>
[0]Name: Jane Smith
[1]Address: 123 State Ave
[2]City: Boston
[3]State: MA
[4]Zip: 02501
[2] =>
[0]Name: John Doe
[1]Address: 123 Main St
[2]City: Chicago
[3]State: IL
[4]Zip: 60021
)
あなたが見ることができるように、第一及び第三のエントリが同一である、と私はたくさんのを持っていますエントリを繰り返します。私はarray_unique($results)
を実行してこれを解決できます。
はこのいただきありがとうございます。できます。 'Zip'を配列の最後のキーとして指定する方法があります。次のキーは新しい配列キーになりますか? これは、 'array_chunk'を捨てる2番目のアドレス行を持つという問題を解決することができます。 – INA2N
2番目の例は、それを扱うべきではありません。キーの繰り返しを検索することで、各配列の長さを計算します。 – ishegg
あなたは良い答えがありますが、いくつかのテストを実行した後、残念ながら、うまくいきませんでした。多くの場合、2番目のアドレス行があり、それはすべてをスローします。 他に何か考えてもいいですか? – INA2N