如何在PHP中访问HTML属性并从中检索数据?

时间:2019-01-01 13:36:42

标签: php regex dom

我是PHP的新手,我想知道如何从HTML元素(例如src)中检索数据吗?

在jQuery中很容易做到这一点:

$('img').attr('src');

但是我不知道如何在PHP中做到这一点(如果可能的话)。

这是我正在研究的示例:

  1. 我将$result加载到SimpleXMLElement中并将其存储到$xml中:

    $xml = simplexml_load_string($result) or die("Error: Cannot create object");

  2. 然后使用foreach遍历所有元素:

    foreach($xml->links->link as $link){
        echo 'Image: ' . $link->{'link-code-html'}[0] . '</br>'; 
        // returns sometihing similar to: <a href='....'><img src='....'></a>
    }
    
  3. 我正在foreach内访问src中的链接(img)。

是否可以访问嵌套在src内部的img中的a中的 echo 'Image: ' . $link->{'link-code-html'}[0] . '</br>'; —在输出到屏幕时清除:

 <ul id="draggablePanelList" class="list-group">
            <% var popupIndex = 0;

                foreach (var item in OldGameSettings.PromotionalDataList)
                {
                    popupIndex++;
            %>

            <li class="list-group-item sortable-item first">

                <asp:LinkButton ID="DownloadPopup_btn_1" 
                                runat="server" 
                                CssClass="btn btn-default pull-right btn-xs"    
                                OnCommand="DownloadPopup_Click"
                                CommandArgument='<%#Eval(item.PromotionId)%>'>
                    <span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
                </asp:LinkButton>

                <span style="margin-right: 15px;" class="pull-right">
                    <i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id="<%=item.PromotionId %>"></i>
                    <i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id="<%=item.PromotionId %>"></i>
                    <i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id="<%=item.PromotionId %>"></i>
                </span>
            </li>
            <% } %>
        </ul>

1 个答案:

答案 0 :(得分:1)

我将使用内置的DOMDocumentDOMXPath API进行此操作,然后可以在任何匹配的img节点上使用getAttribute方法:

$doc = new DOMDocument();
// Load some example HTML. If you need to load from file, use ->loadHTMLFile
$doc->loadHTML("<a href='abc.com'><img src='ping1.png'></a>
                <a href='def.com'><img src='ping2.png'></a>
                <a href='ghi.com'>something else</a>");
$xpath = new DOMXpath($doc);
// Collect the images that are children of anchor elements
$imgs = $xpath->query("//a/img");

foreach($imgs as $img) {
    echo "Image: " . $img->getAttribute("src") . "\n";
}