0

私はマルチ プラットフォーム アプリケーションに取り組んでおり、php で preg_match_all 関数を使用する必要がありますが、適切な方法で使用できませんでした。

<div id="menu_background" style="background-image:url(images/menu_back_aylik.png);width:279px;height:164px;">
<div id="menu_header"><div class="one_menu_date" style="margin-left:94px;">**Çrş. 10.07.2013**</div>
    <div onclick="next();" id="nextMenu"></div>
</div>
<div id="menu_container" style="margin-left:30px;margin-top:16px;">
    <div id="menu_slider" style="width:17889px;">


            <div class="one_menu">
                <div class="one_lunchMainMenu">**lunch menu**</div>
                <div class="one_lunchAltMenu">**lunch menu alternative**</div>
                <div class="one_dinnerMainMenu">**dinner menu**</div>
                <div class="one_dinnerAltMenu">**dinner menu alternative**</div>

            </div>
    </div>
</div>

10.07.2013 は今日の日付です

$lunch にランチメニュー、$lunch_a に代わるランチメニューを割り当てたいのですが、preg_match_all についてよくわかりません。

誰かが私を助けることができますか?

編集: 別の Web サイトからランチ メニューを取得しようとしています

edit2:正規表現に問題があります

4

3 に答える 3

0

私は私の問題を解決しました:

$str=file_get_contents('target url');

preg_match_all('#<div id="menu_background"(.*?)>(.*?)<div class="one_menu_date"(.*?)>(.*?)'.date("d").'(.*?)'.date("m").'(.*?)'.date("Y").'</div>(.*?)<div class="one_lunchMainMenu">(.*?)</div>(.*?)<div class="one_lunchAltMenu">(.*?)</div>(.*?)<div class="one_dinnerMainMenu">(.*?)</div>(.*?)<div class="one_dinnerAltMenu">(.*?)</div>(.*?)</div>(.*?)</div>(.*?)</div>(.*?)</div>#si',$str,$aaa);
于 2013-07-11T15:17:16.233 に答える
0

良い方法は、xpath を使用してデータを抽出することです。

$doc = new DOMDocument();
@$doc->loadHTMLFile($url);
$xpath = new DOMXPath($doc);
$lunches = $xpath->query("//div[@class='one_lunchMainMenu']/text()|//div[@class='one_lunchAltMenu']/text()");
foreach($lunches as $lunch) {
    echo '<br>'. $lunch->nodeValue; }
于 2013-07-10T17:00:19.213 に答える