1

その式を使用して、次のコードで URL を抽出できることを教えてください

<div class="bg-movie alpha omega">
<img class="alignnone size-full wp-image-7282" 
         title="CineMundo Tu Mejor Lugar El Caballero de la Noche Asciende" 
         src="http://www.cinemundo.cl/sitio/wp-content/uploads/2012/05/cinemundo_batman_el-caballero-de-la-noche-asciende_estrenos-2012.jpg" 
         alt="Película El Caballero de la Noche Asciende - Estrenos 2012" 
         width="117" height="173">
</div> 

とここまで来るが上手くいかない

preg_match_all('/<img [class="bg-movie alpha omega"]*src=["|\']([^"|\']+)/i', $html, $images);
4

2 に答える 2

1

HTML を解析する際に正規表現ですべての奇妙なエッジ ケースを処理するように強制するのではなく、PHP の組み込み DOM ライブラリを使用して HTML を解析し、必要なデータを取得することができます。

<?php

$doc = new DOMDocument();

$data = <<<EOD
<div class="bg-movie alpha omega">
<img class="alignnone size-full wp-image-7282"
         title="CineMundo Tu Mejor Lugar El Caballero de la Noche Asciende"
         src="http://www.cinemundo.cl/sitio/wp-content/uploads/2012/05/cinemundo_batman_el-caballero-de-la-noche-asciende_estrenos-2012.jpg"
         alt="Película El Caballero de la Noche Asciende - Estrenos 2012"
         width="117" height="173">
</div>
EOD;

$doc->loadHTML($data);
$xpath = new DOMXpath($doc);
$result = $xpath->query('//img/@src');

foreach ($result as $srcAttr) {
    echo $srcAttr->value, "\n";
}

編集:これは、Web サイトからページをロードする例です。

<?php

$doc = new DOMDocument();
$url='http://www.cinemundo.cl/peliculas/batman-el-caballero-de-la-noche-asciende/';
@$doc->loadHTMLFile($url);
$xpath = new DOMXpath($doc);
$result = $xpath->query('//div[@class="bg-movie alpha omega"]/img/@src');

foreach ($result as $srcAttr) {
    echo $srcAttr->value, "\n";
}
于 2012-08-13T06:04:32.390 に答える
1

アドバイスどおり、PHP DOM ライブラリの使用を検討する必要があります。コードは読み取り可能で再利用可能になります。

$dom = new DOMDocument;
$dom->loadXML($html);
echo $dom->getElementsByTagName('img')->item(0)->getAttribute('src');
于 2012-08-13T06:05:29.690 に答える