【问题标题】:regex pattern to find this particular string in file_get_contents in PHP正则表达式模式在 PHP 的 file_get_contents 中找到这个特定的字符串
【发布时间】:2015-06-16 14:07:01
【问题描述】:

我希望通过使用 PHP 中的 file_get_contents() 函数从 url 中获取包含在标签中的这个值 'B00DS4KJR4'。但是,我没有编写正确的正则表达式来从页面的这个 html 源代码中找到值:

<span class="a-text-bold">ASIN:
                    </span>
                    <span>B00DS4KJR4</span>

您能帮我编写正确的正则表达式以在页面上找到该特定值吗?

【问题讨论】:

标签: php regex string curl file-get-contents


【解决方案1】:

您可以使用Regex101 上也提供的如下正则表达式。这将查找具有任何属性的&lt;span&gt;,在innerHTML 中包含字符串ASIN:,后跟另一个&lt;span&gt;,并捕获第二个&lt;span&gt; 的内容。

$html ='<span class="a-text-bold">ASIN:
                </span>
                <span>B00DS4KJR4</span>';

if (preg_match('/<span\s[^><]*>\s*ASIN:\s*<\/span>\s*<span>\s*([^><]*)\s*<\/span>/i', $html, $m)) {
    $asin = $m[1];
    print $asin;
}

【讨论】:

    【解决方案2】:
    preg_match_all('/<span>(.*)<\/span>/',$the_html,$the_result_array);
    

    第一个span 与正则表达式不匹配,因为它有类,其他写成&lt;span&gt;anything&lt;/span&gt; 的会被找到。

    【讨论】:

    • 是的,我知道,但问题是跨度标签中可能包含许多字符串。但我只想在 ASIN: 文本之后找到。那么,我会这样做吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2014-10-20
    • 2020-01-22
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多