1

私はこのようなhtmlテンプレートを持っています:

    <div class="cont">
    <div class="...">
    <p>...<p>
    <img alt="" class="popup" src="DESIRED IMAGE LINK" style="..." /></p><p>...</p>
    ....

そして、「」タグ内の「DESIRED IMAGE LINK」を抽出したいのですが、現在はこれを使用しています。

$pattern = '<div class="cont">.*?src=["\']?([^"\']?.*?(png|jpg|jpeg|gif))["\']?/i';
if (preg_match($pattern, $content, $image))
     .....

しかし、それは機能しません。エラーは次のとおりです。

    warning: preg_match() [function.preg-match]: Unknown modifier '.' 

どうすれば修正できますか?ありがとう

4

3 に答える 3

3

答えは、正規表現を使用しないことです。

$contents = <<<EOS
<div class="cont">
    <div class="...">
    <p>...<p>
    <img alt="" class="popup" src="DESIRED IMAGE LINK" style="..." /></p><p>...</p>
EOS;

$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($contents);
libxml_clear_errors();

$xp = new DOMXPath($doc);

// get first image inside div.cont
foreach($xp->query('//div[@class="cont"]//img[1]') as $node) {
        // output the src attribute
        echo $node->getAttribute('src'), PHP_EOL;
}

参照:DOMDocument DOMXPath

于 2012-12-18T17:01:27.597 に答える
1

htmlの解析を計画している場合は、 xpathでDOMを使用してみてください。

于 2012-12-18T17:00:13.807 に答える
0

$pattern = '/<div class="cont">.*?src=["\']?([^"\']?.*?(png|jpg|jpeg|gif))["\']?/i

先頭の区切り文字がありません/

于 2012-12-18T16:58:39.677 に答える