从html的某些标签/特定数据之间获取任何东西?

时间:2019-10-13 17:57:33

标签: php regex curl

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

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

我能够卷翘,然后遇到问题。我玩过正则表达式,但不幸的是,它并不能真正按照我的方式工作。问题是,我需要一个可以在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标签之间的内容?我不在乎它是数字还是格式化的价格,只需要在我自己的管理员定价工具中进行比较即可。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

尽管如此,如果您可以执行curl命令,则也许还可以执行其他终端/ CLI命令,例如'sed'。在这种情况下,删除大多数HTML标记的简单方法如下: curl www.a-given-web-page.com | sed 's/<[^>]*>//g'

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

我希望这会有用,祝你好运!

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

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