重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

正規表現を使いimgタグ内から幅と高さサイズを抜き出し
phpにて正規表現を使い html の imgタグ内の width = "xxx" height = "xxx" を各々抜き出しその数字も個別に抜き出したいと思っております。
正規表現で行き詰っており、お知恵を拝借できればと思っております。
説明がわかりづらいかと思いますが、よろしくお願いしたいと思います。

下記のような文字列より
<img src="http://test.co.jp/img/test01.jpg" alt="テスト画像です。" title="テスト画像です。" width="361" height="640" class="size-full wp-image-100" />

width="361"
height="640"
を個別に取りだし
さらにその中の数字"361"を取り出したいと思っております。

正規表現に不慣れなので、お知恵をお借りいただけないでしょうか。
よろしくお願いいたします。

A 回答 (1件)

<?php


$str='<img src="http://test.co.jp/img/test01.jpg" alt="テスト画像です。" title="テスト画像です。" width="361" height="640" class="size-full wp-image-100" />';

$pattern="/(width=\"([0-9]*)\").*(height=\"([0-9]*)\") /";
if(preg_match_all($pattern,$str,$match)) {
var_dump($match);
}
?>
イメージタグ内の属性の並び順や書式がきっちり決まってるなら上記のような感じで
$match[0]にはマッチした全体が
$match[1]にはwidth="361"が
$match[2]には361が
$match[3]にはheight="640"が
$match[4]には640が設定されます。

そうでない場合、属性の名前と値をmatchingで取り出して
目的の属性を探すといいと思います。
<?php
$str='<img src="http://test.co.jp/img/test01.jpg" alt="テスト画像です。" title="テスト画像です。" width="361" height="640" class="size-full wp-image-100" />';

$pattern="/([^\s]*)=[\"\'](.*?)[\"\']/";
if(preg_match_all($pattern,$str,$match)) {
var_dump($match);
if($key=array_search("width",$match[1])) {
print($match[2][$key]);
}
}
?>
上のような正規表現(XXX="YYY"とXXX='YYY'はとれますがXXX=YYYはとれません)ですと
$match[0]には属性全体(XXX="YYY")が
$match[1]には属性の名前XXXが
$match[2]には属性の値YYYが設定されます。
$match[1]からarray_searchで目的の属性をせばOKです。
    • good
    • 0
この回答へのお礼

duron様、
早々のご回答ありがとうございました。
完璧にできました。
matchingで取り出す方法までご教授いただき、勉強になりました。
どうもありがとうございました。

お礼日時:2010/07/24 15:54

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