【问题标题】:Grab anything between certain tags / specific data from html? [duplicate]从 html 中抓取某些标签/特定数据之间的任何内容? [复制]
【发布时间】:2019-10-13 17:57:33
【问题描述】:

我有一个自定义编写的电子商务网站 - 我的任何竞争对手(有时)都在玩非常不公平的游戏。他们非常重视他们的价格,这意味着如果我在几天内降低或更改产品的价格,它会在我的竞争对手页面上发生变化。

我想做的是在 php 中为我的管理部分编写一个自定义代码,允许在竞争对手网站上查询相同的产品页面,并只显示他们对相同产品的价格。

我能够运行一些 curl,然后我遇到了问题。我玩过正则表达式,但不幸的是它并没有真正按照我想要的方式工作。问题是,我需要一个适用于 3 个不同 html 上的 3 个两个案例的解决方案,例如:

<span class="price">$322.00</span>
<div class="sale-price">322</div>
<div class="some_price"><span class="price" ...>$322 USD</span></div>

等等。

获取正则表达式的方法是什么(或者如果有其他方法请告诉我)来剪切某些 html 标记之间的任何内容?我不在乎它是数字还是格式化价格,我只需要它在我自己的管理员定价工具中进行比较。

谢谢!

【问题讨论】:

    标签: php regex curl


    【解决方案1】:

    这可能是 Regular expression to remove HTML tags from a string 的副本。

    不过,如果您可以执行 curl 命令,您也许还可以执行其他终端/CLI 命令,例如“sed”。如果是这种情况,删除大部分 HTML 标记的简单方法如下: curl www.a-given-web-page.com | sed 's/&lt;[^&gt;]*&gt;//g'

    实际上,如果您不能使用 sed,您可能很容易在您的 php 代码中重用我在 sed 命令 (&lt;[^&gt;]*&gt;) 中使用的正则表达式模式? 我不是 PHP 专家,但似乎 PHP 中确实存在正则表达式搜索和替换功能: https://www.php.net/manual/en/function.preg-replace.php

    希望对你有用,祝你好运!

    更新:我检查了一下如何在 PHP 沙箱上使用 preg_replace。 它似乎适用于您的示例数据: http://sandbox.onlinephpfunctions.com/code/d9f8dc6ac31c2f0505a9f2c29ee503c7d5c69e72

    这是我的编码方式:$result = preg_replace('/&lt;[^&gt;]*&gt;/', '', $string); (其中$string 是您的html 存储变量,$result 应该包含不带html 标记的预期结果。

    【讨论】:

    • preg-replace 存在,但我无法弄清楚如何在特定的 html 标记之间提取任何内容,如上面的示例所示,价格与什么格式无关。我已经在网上搜索过,但没有一个例子有效。不过,谢谢你的回答。
    • 再说一次,我对 PHP 不是很有经验,但您可以尝试以下方法:$result = preg_replace('/&lt;[^&gt;]*&gt;/', '', $string); 其中$string 是您的 html 存储的变量,$result 应该存储预期结果
    猜你喜欢
    • 2013-09-16
    • 1970-01-01
    • 2014-01-20
    • 2018-01-27
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2011-08-18
    相关资源
    最近更新 更多