如何从元素中获取文本,排除其中的一些其他元素
How to Get text from element, excluding some other elements inside that
我在 symfony 框架中使用 domCrawler
。我使用它从 html 中抓取了内容。现在我需要获取带有 ID 的元素内的文本。我可以使用以下代码来修改文本:
$nodeValues = $crawler1->filter('#idOfTheElement')->each(function (Crawler $node, $i) {
return $node->text();
});
元素(#idOfTheElement
)包含一些 span、按钮等(也有一些 类)。我不想要那些里面的内容。如何从元素中获取文本,排除其中的一些其他元素。
注意:除了元素 #idOfTheElement
,我想要获取的文本没有任何其他包装器
Html 如下所示:
<li id='#idOfTheElement'>Tel :<button data-pjtooltip="{dtanchor:'tooltipOpposeMkt'}" class="noMkt JS_PJ" type="button">text :</button><dl><dt><a name="tooltipOpposeMkt"></a></dt><dd><div class="wrapper"><p><strong>Signification des pictogrammes</strong></p><p>Devant un numéro, le picto <img width="11" height="9" alt="" src="something"> signale une opposition aux opérations de marketing direct.</p><span class="arrow"> </span></div></dd></dl>12 23 45 88 99</li>
你可以获取元素 html 然后去掉标签
preg_replace('@<(\w+)\b.*?>.*?</>@si', '', $node->html());
首先删除子节点:
$crawler1->filter('#idOfTheElement')->each(function (Crawler $crawler) {
foreach ($crawler as $node) {
$node->parentNode->removeChild($node);
}
});
然后获取没有子节点的文本:
$cleanContent = $crawler1->filter('#idOfTheElement')->text();
我在 symfony 框架中使用 domCrawler
。我使用它从 html 中抓取了内容。现在我需要获取带有 ID 的元素内的文本。我可以使用以下代码来修改文本:
$nodeValues = $crawler1->filter('#idOfTheElement')->each(function (Crawler $node, $i) {
return $node->text();
});
元素(#idOfTheElement
)包含一些 span、按钮等(也有一些 类)。我不想要那些里面的内容。如何从元素中获取文本,排除其中的一些其他元素。
注意:除了元素 #idOfTheElement
,我想要获取的文本没有任何其他包装器Html 如下所示:
<li id='#idOfTheElement'>Tel :<button data-pjtooltip="{dtanchor:'tooltipOpposeMkt'}" class="noMkt JS_PJ" type="button">text :</button><dl><dt><a name="tooltipOpposeMkt"></a></dt><dd><div class="wrapper"><p><strong>Signification des pictogrammes</strong></p><p>Devant un numéro, le picto <img width="11" height="9" alt="" src="something"> signale une opposition aux opérations de marketing direct.</p><span class="arrow"> </span></div></dd></dl>12 23 45 88 99</li>
你可以获取元素 html 然后去掉标签
preg_replace('@<(\w+)\b.*?>.*?</>@si', '', $node->html());
首先删除子节点:
$crawler1->filter('#idOfTheElement')->each(function (Crawler $crawler) {
foreach ($crawler as $node) {
$node->parentNode->removeChild($node);
}
});
然后获取没有子节点的文本:
$cleanContent = $crawler1->filter('#idOfTheElement')->text();