2015.
05.
11
23:27:21
結論から書くと、preg_match_all()関数を使って
のように書けばOKです。
それでは詳細を……というほど書くことも無いので、サンプルですφ(--)
実行結果は、こんな感じになりますφ(--)
「<p>~</p>」にマッチした要素がすべて抽出されていますね。
ちなみに、preg_match_all()ではなくpreg_match()を使うと、
最初にマッチしたもののみ返却されます。
例えば、こんなコードを実行するとφ(--)
こんな結果になりますφ(--)
今度は、最初にマッチしたもののみ抽出されていますね。
マッチしたものを全部抽出するのは「preg_match()」ではなく「preg_match_all()」です。
覚えておいてください。
そうしないと、私みたいに5分くらいあれこれ悩む羽目になります(-A-)
そんな感じ\(--)/
preg_match_all(【パターン】, 【対象文字列】, 【結果配列】);
のように書けばOKです。
それでは詳細を……というほど書くことも無いので、サンプルですφ(--)
<?php
//対象文字列
$target = <<<EOT
<html>
<head></head>
<body>
<p>ああああ</p>
<p>いいい</p>
<p>ううう</p>
</body>
</html>
EOT;
//パターン
$pattern= '/<p>(.*)<\/p>/';
//パターンマッチ&抽出
preg_match_all($pattern, $target, $result);
//結果表示
var_dump($result);
?>
//対象文字列
$target = <<<EOT
<html>
<head></head>
<body>
<p>ああああ</p>
<p>いいい</p>
<p>ううう</p>
</body>
</html>
EOT;
//パターン
$pattern= '/<p>(.*)<\/p>/';
//パターンマッチ&抽出
preg_match_all($pattern, $target, $result);
//結果表示
var_dump($result);
?>
実行結果は、こんな感じになりますφ(--)
array(2) {
[0]=>
array(3) {
[0]=>
string(15) "<p>ああああ</p>"
[1]=>
string(13) "<p>いいい</p>"
[2]=>
string(13) "<p>ううう</p>"
}
[1]=>
array(3) {
[0]=>
string(8) "ああああ"
[1]=>
string(6) "いいい"
[2]=>
string(6) "ううう"
}
}
[0]=>
array(3) {
[0]=>
string(15) "<p>ああああ</p>"
[1]=>
string(13) "<p>いいい</p>"
[2]=>
string(13) "<p>ううう</p>"
}
[1]=>
array(3) {
[0]=>
string(8) "ああああ"
[1]=>
string(6) "いいい"
[2]=>
string(6) "ううう"
}
}
「<p>~</p>」にマッチした要素がすべて抽出されていますね。
ちなみに、preg_match_all()ではなくpreg_match()を使うと、
最初にマッチしたもののみ返却されます。
例えば、こんなコードを実行するとφ(--)
<?php
//対象文字列
$target = <<<EOT
<html>
<head></head>
<body>
<p>ああああ</p>
<p>いいい</p>
<p>ううう</p>
</body>
</html>
EOT;
//パターン
$pattern= '/<p>(.*)<\/p>/';
//パターンマッチ&抽出
//preg_match_all($pattern, $target, $result);
preg_match($pattern, $target, $result);
//結果表示
var_dump($result);
?>
//対象文字列
$target = <<<EOT
<html>
<head></head>
<body>
<p>ああああ</p>
<p>いいい</p>
<p>ううう</p>
</body>
</html>
EOT;
//パターン
$pattern= '/<p>(.*)<\/p>/';
//パターンマッチ&抽出
//preg_match_all($pattern, $target, $result);
preg_match($pattern, $target, $result);
//結果表示
var_dump($result);
?>
こんな結果になりますφ(--)
array(2) {
[0]=>
string(15) "<p>ああああ</p>"
[1]=>
string(8) "ああああ"
}
[0]=>
string(15) "<p>ああああ</p>"
[1]=>
string(8) "ああああ"
}
今度は、最初にマッチしたもののみ抽出されていますね。
マッチしたものを全部抽出するのは「preg_match()」ではなく「preg_match_all()」です。
覚えておいてください。
そうしないと、私みたいに5分くらいあれこれ悩む羽目になります(-A-)
そんな感じ\(--)/