如何用PHP提取相同class属性的div标签内的文本内容
PHP提取指定class的div标签文本内容
下面提供两种实用的PHP实现方式,帮你快速提取目标div内的文本:
方法一:用DOMDocument遍历元素
<?php // 待处理的HTML内容 $html = ' <p>文本1:</p> <div class="b3id-instrument-details-label">Text 1</div> <p>文本2:</p> <div class="b3id-instrument-details-label">Text 2</div> '; // 初始化DOM解析器 $dom = new DOMDocument(); // 屏蔽HTML不规范导致的警告 libxml_use_internal_errors(true); $dom->loadHTML($html); libxml_clear_errors(); // 获取所有div元素 $divElements = $dom->getElementsByTagName('div'); $textList = []; // 遍历div,筛选目标class的元素 foreach ($divElements as $div) { if ($div->getAttribute('class') === 'b3id-instrument-details-label') { // 提取文本并去除首尾空白 $textList[] = trim($div->nodeValue); } } // 按要求输出结果 echo implode("\n", $textList); ?>
方法二:用DOMXPath精准定位(更高效)
如果HTML结构复杂,用XPath可以直接定位目标元素,无需遍历所有div:
<?php $html = ' <p>文本1:</p> <div class="b3id-instrument-details-label">Text 1</div> <p>文本2:</p> <div class="b3id-instrument-details-label">Text 2</div> '; $dom = new DOMDocument(); libxml_use_internal_errors(true); $dom->loadHTML($html); libxml_clear_errors(); // 初始化XPath对象 $xpath = new DOMXPath($dom); // 用XPath表达式匹配class为指定值的div $targetNodes = $xpath->query('//div[@class="b3id-instrument-details-label"]'); $textList = []; foreach ($targetNodes as $node) { $textList[] = trim($node->nodeValue); } echo implode("\n", $textList); ?>
两种方法的输出结果都符合预期:
Text 1 Text 2
内容的提问来源于stack exchange,提问作者Süleyman Hamdi
相关产品推荐
相关产品推荐

