正则表达式php - 使用特定ID在div中查找内容

时间:2011-08-16 14:31:35

标签: php regex html extract

我确信这是一个简单的问题,而且我已经在Google上搜索和搜索了 - 我似乎无法弄清楚这有什么问题。我在这个页面上有其他区域,我使用类似的表达式返回我想要的内容。

然而,我无法回答这个问题,所以也许有人可以帮助我。

我有一个具有特定ID“div-user-sub-commhome”的div - 我想从该div中提取文本。文本被标签包围但我可以轻松地使用strip_tags来获取那些标签。我正在使用正则表达式试图将数据拉出来。

这是我的代码:

$intro = "<div id="user-sub-summary">Summary</div>
<div id="user-sub-commhome"><em>Commercial</em></div>
<div id="whatever">whatever</div>";

$regex = '#\<div id="user-sub-commhome"\>(.+?)\<\/div\>#s';
preg_match($regex, $intro, $matches);
$match = $matches[0];
echo $match;

我尝试过改变一切都没有成功,似乎没有什么可以回应任何事情。所以我希望对正则表达式更有经验的人有所帮助。

3 个答案:

答案 0 :(得分:4)

如果您将$intro周围的双引号更改为单引号,则您的代码适用于我:

$intro = '<div id="user-sub-summary">Summary</div>
<div id="user-sub-commhome"><em>Commercial</em></div>
<div id="whatever">whatever</div>';

$regex = '#\<div id="user-sub-commhome"\>(.+?)\<\/div\>#s';
preg_match($regex, $intro, $matches);
$match = $matches[0];
echo $match;

您可能希望阅读正则表达式和HTML上的some famous advice

答案 1 :(得分:1)

我不会解释为什么using regular expressions to parse php is a bad idea。我认为这里的问题是你没有激活error_reporting,或者你只是没有查看你的错误日志。定义$intro - 字符串的方式应该会导致很多问题(无论如何/ unterminatet字符串)。它应该是这样的:

$intro = "<div id=\"user-sub-summary\">Summary</div>
<div id=\"user-sub-commhome\"><em>Commercial</em></div>
<div id=\"whatever\">whatever</div>";

或者这个:

$intro = '<div id="user-sub-summary">Summary</div>
<div id="user-sub-commhome"><em>Commercial</em></div>
<div id="whatever">whatever</div>';

如果你在双引号字符串中使用双引号,则必须使用反斜杠(\)对它们进行掩码。 anoter方式是使用单引号作为字符串(就像在我的第二个例子中)。

答案 2 :(得分:0)

在您的示例代码$matches[0]中包含所有匹配的部分,而不是捕获组。捕获组位于$matches[1]