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 了解不多。

有人能帮我吗?

编辑:我正在尝试从另一个网站获取午餐菜单

edit2:我在使用正则表达式时遇到问题

4

3 回答 3

1

我有点困惑你在这里做什么。看起来您正试图用名为 $lunch 的 PHP 变量替换午餐菜单。

您只是在编写需要动态 HTML 生成的 PHP 页面吗?如果是这样,你不应该需要 preg_match_all。你应该能够做到这一点:

<div class="one_lunchMainMenu"><?php echo $lunch; ?></div>

这会动态地将 $lunch 的值注入代码中。

我能想到您可能需要使用 preg_match_all 的唯一原因是,如果您将此 HTML 代码以变量形式传递给您,而不是自己编写,并且您正试图用 preg_match_all 替换部分代码。

编辑:

看到您的评论后,您似乎确实需要替换 HTML 字符串中的数据,而不是动态生成它。

由于您正在尝试进行替换,因此我将使用该preg_replace函数:

$escaped_val = preg_quote("**lunch menu**") # Need to escape this string because it contains usual regex special chars
preg_replace( /$escapedVal/, $lunch, $yourHTMLString )
于 2013-07-10T15:42:38.830 回答
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 回答