【问题标题】:php preg_match for <a href> [closed]<a href> 的 php preg_match [关闭]
【发布时间】:2013-04-17 15:23:35
【问题描述】:

首先我是 PHP 新手。

通常我可以为&lt;div class="T-time"&gt;(.*)&lt;/div&gt;preg_match 标签并阅读内容,但我不能为:

&lt;div class="T-date"&gt; &lt;a href=" different link "&gt;123&lt;/a&gt; &lt;/div&gt;

&lt;a href=&gt;标签中的链接每次都不同时,是否可以为123结果添加preg_match标签?

从现在开始谢谢。

【问题讨论】:

  • 我想你的意思是preg_match
  • 修复抱歉感谢@brbcoding
  • 谢谢@BartFriederichs 但与我的问题没有什么不同?
  • @LuaiKalkatawi 我认为他的意思是你不应该用正则表达式解析 HTML,语言的结构不能很好地处理它。你应该问的问题是你需要使用正则表达式吗?有 HTML 解析器或类似 jQuery 的东西,如果在客户端做它会更容易。

标签: php html html-parsing preg-match


【解决方案1】:

最好像这样使用 DOM 解析器:

$input = 'html input';
$html = new DOMDocument();
$html->loadHTML($input);

foreach($html->getElementsByTagName('div') as $div)
{
    if($div->getAttribute('class') == 'T-date')
    {
        foreach($div->getElementsByTagName('a') as $link)
            echo ($link->getAttribute('href') . "\t" . $link->nodeValue . "\n");
    }
}

但如果你仍然想使用preg_match,你可以使用这个:

$str = '<div class="T-date"> <a href=" different link ">123</a> </div>';
preg_match('/<div class="T-time"><a.*?>(.*?)<\/a></div>/', $str, $matches);
print_r($matches);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2019-04-23
    • 1970-01-01
    • 2018-06-11
    • 2015-09-17
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多