【问题标题】:Identify the element with preg_match which contains specific text as value in it [duplicate]使用 preg_match 识别元素,其中包含特定文本作为其中的值 [重复]
【发布时间】:2020-11-28 09:39:00
【问题描述】:

在我的 WordPress v5.5.3 中,我正在构建外部域的书签页面,并且我想从每个页面中识别一个具有特定文本作为值的元素,并捕获其下一个元素的值:

<html>
        <div>

            <ul class="list">
                <li>
                    <span class="item">
                        <span class="list-item">Name</span>
                        <span>John</span>
                    </span>
                </li>
                <li>
                    <span class="item">
                        <span class="list-item">Age</span>
                        <span>25</span>
                    </span>
                <li>
            </ul>



            <ul class="list">
                <li>
                    <span class="item">
                        <span class="list-item">Brand</span>
                        <span>Honda</span>
                    </span>
                </li>
                <li>
                    <span class="item">
                        .....
                    </span>
                <li>
            </ul>



            <ul class="list">
                <li>
                    <span class="item">
                        <span class="list-item">City</span>
                        <span>New York</span>
                    </span>
                </li>
                <li>
                    ....
                <li>
            </ul>

        </div>
    </html>

所有元素都没有唯一的类或 ID。

我想获取名称值(例如来自此页面的 John)并将其存储为变量,这将是 &lt;span&gt;Name&lt;/span&gt; 的下一个元素并且是唯一元素。

使用 preg_match,如果有一个唯一的 ID,我会用:

preg_match('~<span id="name"[^>]*>(.*?)</span>~si', $url, $name);
$name = $name[0];

在上述场景中,我如何才能捕获值 John

【问题讨论】:

    标签: php regex preg-match


    【解决方案1】:

    我了解您可能只想使用preg_match。但我的经验表明,解析 HTML 的更好解决方案是使用 DOMDocumenDOMXPath 查询。

    https://www.php.net/manual/ru/domxpath.query.php

    使用它,您可以提取所需的任何数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2021-03-02
      • 1970-01-01
      • 2020-08-30
      • 2018-11-27
      • 1970-01-01
      相关资源
      最近更新 更多