0

今日、正規表現などについて学んでいて、思い通りに動作するようになりましたが、サイトからデータを取得するために何かの一部として使用しようとすると、うまくいきませんでした。興味深いことに、取得していた生の html をエコーし​​、それを手動で文字列として正規表現に入れると、正常に機能しました。なぜこれが起こるのか誰にも分かりますか?コードは次のとおりです。

preg_match_all('/<img src="images\/cms\/trinket\/(.*).png" \/><\/a> 
                <div style="width:85px; font-size:14px; font-weight:bold; 
                 color:#731c08;">(.*)<\/div>/iU', snd('test.php'), 
               $matches, PREG_SET_ORDER);

snd は、curl が問題を引き起こしている可能性のあるデータを返す関数ですが、私にはわかりません。

機能:

function snd($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://whatever.com/'.$url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

例 (読みやすくするために改行を追加):

<div style="width:600px; margin-left:auto; margin-right:auto; text-align:center; position:relative; z-index:1;"> 
<span style="display:inline-block; width:85px; height:100px;"> 
<a rel="includes/itemajax.php?id=789&tab=trinket" class="clue">
<img src="images/cms/trinket/789.png" /></a> 
<div style="width:85px; font-size:14px; font-weight:bold; color:#731c08;">4</div> 
</span>  <span style="display:inline-block; width:85px; height:100px;"> 
<a rel="includes/itemajax.php?id=891&tab=trinket" class="clue">
<img src="images/cms/trinket/891.png" /></a> 
<div style="width:85px; font-size:14px; font-weight:bold; color:#731c08;">3</div> </span>    

返す必要があります: 789,4 および 891,3

4

1 に答える 1