【问题标题】:How to get img tag value inside a specific div and specific anchor tag using regular expression如何使用正则表达式在特定 div 和特定锚标记内获取 img 标记值
【发布时间】:2013-04-16 04:41:33
【问题描述】:

我是正则表达式的新手,我尝试了很多方法来获取锚标记 html 中的图像标记值 这是我的 html 表达式

<div class="smallSku" id="ctl00_ContentPlaceHolder1_smallImages">
                                <a title="" name="http://www.playg.in/productImages/med/PNC000051_PNC000051.jpg" href="http://www.playg.in/productImages/lrg/PNC000051_PNC000051.jpg" onclick="return showPic(this)" onmouseover="return showPic(this)">
    <img border="0" alt="" src="http://www.playg.in/productImages/thmb/PNC000051_PNC000051.jpg"></a>    <a title="PNC000051_PNC000051_1.jpg" name="http://www.playg.in/productImages/med/PNC000051_PNC000051_1.jpg" href="http://www.playg.in/productImages/lrg/PNC000051_PNC000051_1.jpg" onclick="return showPic(this)" onmouseover="return showPic(this)">
    <img border="0" alt="PNC000051_PNC000051_1.jpg" src="http://www.playg.in/productImages/thmb/PNC000051_PNC000051_1.jpg"></a>
                        </div>

我只想返回图像标签的 src 值,我在“preg_match_all()”中尝试了一个匹配模式,模式是

"@<div[\s\S]class="smallSku"[\s\S]id="ctl00_ContentPlaceHolder1_smallImages"\><a title=\"\" name="[\w\W]" href="[\w\W]" onclick=\"[\w\W]" onmouseover="[\w\W]"\><img[\s\S]src="(.*)"[\s\S]></a><\/div>@"

请帮助我为此尝试了很多时间也尝试了此链接Match image tag not nested in an anchor tag using regular expression

【问题讨论】:

  • 一个合适的 HTML 解析器可能比一个正则表达式为你提供更好的服务。
  • 是的,但我需要一个正则表达式来代替那个..
  • @SunithSaga:为什么你需要正则表达式而不是DOM解析器? DOM 解析器在 100% 的时间里会比正则表达式做得更好。
  • 不要使用正则表达式解析 HTML。您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用已经编写、测试和调试的 PHP 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/php

标签: php regex html-parsing


【解决方案1】:

正则表达式不是解析 HTML 的正确工具。请参阅此常见问题解答:How to parse and process HTML/XML?

这是一个关于如何使用您的示例获取 src 属性的示例:

$doc = new DOMDocument();
$doc->loadHTML($your_html_string);
$xpath = new DOMXPath($doc);

foreach ($xpath->query('//div[@class="smallSku"]/a/img/@src') as $attr) {
    $src = $attr->value;
    print $src;
}

【讨论】:

    【解决方案2】:

    试试这个太阳

        $content = file_get_contents('your url'); 
        preg_match_all("|<div class='items'>.*</div>|", $content, $arr, PREG_PATTERN_ORDER);  
    preg_match_all("/src='([^']+)'/", $arr[0][0], $arrr, PREG_PATTERN_ORDER); 
        echo '<pre>'; 
        print_r($arrr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      相关资源
      最近更新 更多