preg_match_all()でマッチしたものは配列で返される。なので、その配列を整理するのにforeach()をつかったりしてひと仕事することも多い。しかし、もし、キーと値の関係にあるデータなら、array_combine()を使うと、手軽に連想配列にすることができる。覚えておくといいかもしれない。
$html = '
- Apple
- りんご
- Orange
- みかん
- Strawberry
- いちご
';
preg_match_all('/(.+)<\/dt>(.+)<\/dd>/U', $html, $matches);
var_dump($matches);
/*
array(3) {
[0]=>
array(3) {
[0]=>
string(32) "Appleりんご"
[1]=>
string(33) "Orangeみかん"
[2]=>
string(37) "Strawberryいちご"
}
[1]=>
array(3) {
[0]=>
string(5) "Apple"
[1]=>
string(6) "Orange"
[2]=>
string(10) "Strawberry"
}
[2]=>
array(3) {
[0]=>
string(9) "りんご"
[1]=>
string(9) "みかん"
[2]=>
string(9) "いちご"
}
}
*/
$keys = $matches[1];
$values = $matches[2];
$words = array_combine($keys, $values); // ここがみそ
var_dump($words);
/*
array(3) {
["Apple"]=>
string(9) "りんご"
["Orange"]=>
string(9) "みかん"
["Strawberry"]=>
string(9) "いちご"
}
*/
RELATED POSTS