1

我必须使用 div 标签内的正则表达式标题来解析一个 html 文件,这是我试图解析的 html 标签

<div class="descriptionArea-2" style="visibility: visible;">
<img src="(image Url Here)" />
<br />
<h2>"Product Title"</h2>
        <div class="displayDescription">"product description here."<div class="icons">icons</div></div>

</div>

我在这个中尝试了很多时间来获取“产品标题”和“产品描述”

4

3 回答 3

1

我不知道这些页面有多通用,但这些表达式可以工作:

产品名称:

/<h2>"(.*)"<\/h2>/

描述:

/<div class="displayDescription">"(.*)"<div class="icons">/

也许是一种更通用的方式来获取描述:

/<div class="displayDescription">([^<]*)/

使用 preg_match(_all) 获取您想要的值

preg_match_all('/<h2>"(.*)"<\/h2>/',$string,$matches)
$matches[1][0] //gets the first title
于 2013-04-24T07:38:03.223 回答
0

这是使用正则表达式获得所需内容的一种可能方法:

/<div class="descriptionArea-2"[^>]*>(?: *<[^h][^2][^>]*>\/>)*<h2>([^<]*)<\/h2>[^<]*<div class="displayDescription">([^<]*)</

以上尝试匹配与问题中提供的示例 html 完全相同的层次结构。根据需要替换类字符串。如果h2和嵌套div标签(带有displayDescription类的标签)顺序相反,或者中间有任何其他标签,则正则表达式将不起作用。

第一个返回值是h2文本,第二个是内部div文本。


如果您的 html 文档格式正确,另一种选择是使用xpath 。以下是每个字符串的 xpath 解决方案:

//div[@class="descriptionArea-2"]/h2/text()

//div[@class="descriptionArea-2"]/div[@class="displayDescription"]/text()
于 2013-04-24T08:37:07.423 回答
0

为此的正则表达式

'/<h2>"([^"]*?)"<\/h2>/'

使用函数 preg_match_all

你确定标题总是用双引号括起来吗?

您的 html 代码无效,没有带有描述的 div 结束标记

于 2013-04-24T07:37:30.323 回答