如何从PHP变量存储的带<p>标签段落中提取内容生成数组
PHP提取p标签内容存入数组实现方法
方案1:DOMDocument解析(推荐)
使用PHP内置的DOM扩展解析HTML是最稳妥的方案,即使p标签带id、class等属性也能正常提取,不会出现匹配错误。
代码示例:
<?php $text = '<p>para 1</p> <p>para 2</p> <p>para 3</p>'; // 初始化DOM对象,禁用libxml报错避免HTML不规范导致的提示 $dom = new DOMDocument(); libxml_use_internal_errors(true); // 转码保证中文正常识别 $dom->loadHTML(mb_convert_encoding($text, 'HTML-ENTITIES', 'UTF-8')); libxml_clear_errors(); // 获取所有p标签 $p_list = $dom->getElementsByTagName('p'); $result = []; foreach ($p_list as $p_node) { // 提取文本并去除首尾空白 $result[] = trim($p_node->nodeValue); } // 打印验证结果 print_r($result); ?>
运行后输出结果和你要求的结构完全一致:
Array ( [0] => para 1 [1] => para 2 [2] => para 3 )
方案2:正则匹配(仅适用于固定无属性p标签场景)
如果你的输入结构完全固定,p标签没有任何额外属性,可以用正则快速实现:
<?php $text = '<p>para 1</p> <p>para 2</p> <p>para 3</p>'; // 非贪婪匹配所有p标签内的内容 preg_match_all('#<p>(.*?)</p>#s', $text, $matches); // 去除每个元素的首尾空白 $result = array_map('trim', $matches[1]); print_r($result); ?>
注意:如果p标签存在属性、嵌套标签等情况,正则方案会匹配失败,优先使用方案1。
内容的提问来源于stack exchange,提问作者jmcgrother
相关产品推荐
相关产品推荐

