regexphp-在div中查找具有特定ID的内容

regexphp-在div中查找具有特定ID的内容,php,regex,html,extract,Php,Regex,Html,Extract,我相信这是一个简单的问题,尽管我在这里搜索了很多,但我似乎不知道这是怎么回事。我在本页的其他地方使用了类似的表达式,这些表达式完全返回了我想要的内容 然而,我不能得到这个特殊的比特返回我想要的,所以也许有人可以帮助我 我有一个具有特定ID“user sub commhome”的div-我想从该div中提取文本。文本被标记包围,但我可以轻松地使用strip_标记将其删除。我正在使用正则表达式尝试提取数据 这是我的密码: $intro = "<div id="user-sub-summary"

我相信这是一个简单的问题,尽管我在这里搜索了很多,但我似乎不知道这是怎么回事。我在本页的其他地方使用了类似的表达式,这些表达式完全返回了我想要的内容

然而,我不能得到这个特殊的比特返回我想要的,所以也许有人可以帮助我

我有一个具有特定ID“user sub commhome”的div-我想从该div中提取文本。文本被标记包围,但我可以轻松地使用strip_标记将其删除。我正在使用正则表达式尝试提取数据

这是我的密码:

$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;
$intro=“摘要
商业的
无论如何”;
$regex='#\(.+?)\#s';
预匹配($regex,$intro,$matches);
$match=$matches[0];
回声$匹配;

我尝试过改变一些事情,但没有成功,似乎没有任何东西能产生共鸣。因此,我希望一些对regex更有经验的人能有所帮助。

如果您将
$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;
$intro=”摘要
商业的
随便什么",;
$regex='#\(.+?)\#s';
预匹配($regex,$intro,$matches);
$match=$matches[0];
回声$匹配;

您可能需要阅读正则表达式和HTML。

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

中,我不会解释原因。我认为这里的问题是你没有激活错误报告,或者你只是没有查看你的错误日志。以这种方式定义
$intro
-字符串应该会导致很多问题(意外的/未终止的字符串)。应该是这样的:

$intro = "<div id=\"user-sub-summary\">Summary</div>
<div id=\"user-sub-commhome\"><em>Commercial</em></div>
<div id=\"whatever\">whatever</div>";
$intro=“摘要
商业的
无论如何”;
或者这个:

$intro = '<div id="user-sub-summary">Summary</div>
<div id="user-sub-commhome"><em>Commercial</em></div>
<div id="whatever">whatever</div>';
$intro=”摘要
商业的
随便什么",;

如果在双引号字符串中使用双引号,则必须使用反斜杠(
\
)屏蔽它们。另一种方法是对字符串使用单引号(如我的第二个示例)。

不确定这是否只是示例代码,但$intro变量不正确,因为它没有正确转义。我建议您尝试使用html解析器而不是正则表达式来完成此任务。看,是的,这只是示例代码$简介实际上是html的一大块——我只是举了一个例子,这样人们可以更清楚地看到我所说的内容。您的模式在html中运行良好,没有考虑到Devator注意到的PHP语法错误。转义双引号。谢谢-我应该在最初的一篇文章中澄清,HTML块只是用于示例目的。。。我的代码实际上是这样的:$intro=$form->data['introtext'];这就带来了一大块HTML——我还有其他的正则表达式,它们的编写方式几乎相同(除了它们说“用户子摘要”或我试图获取的任何ID),它们都可以工作。我只是想看看是否有人能对这件事挑毛病。。。