dポイントプレゼントキャンペーン実施中!

preg_match_allを使って文字列を取得しようとしています。

$data = '<img src="abcdef">
<img src="あいうえお">';
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $data, $matches);
var_dump($matches);

$dataの形式?がこのような形だと思ったもの(「abcdef」と「あいうえお」)が取れるのですが、
$data = '<img src="abcdef"><img src="あいうえお">';
だと、取れません。
(たぶん、<img src="xxxx">のあとが改行されていないとダメなようです)

正規表現がよくわかっていなくて、これもネットで拾ったものです。
$dataは簡易的に書きましたが、実際は文章の中に複数の画像が差し込まれているものです。

どうすればうまく取れるのでしょう。
よろしくお願いします。

A 回答 (1件)

デフォルトは最長一致です。

最短一致にするには、「 .+? 」、「 .*? 」のように ? を追加します。

$output = preg_match_all('/<img.+?src=[\'"]([^\'"]+)[\'"].*?>/i', $data, $matches);
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事取れました。

お礼日時:2018/10/21 22:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!