使用PHP Simple HTML DOM Parser提取指定元素及区域内带日期的ft00类文本
使用PHP Simple HTML DOM Parser处理指定HTML内容的解决方案
没问题,我来帮你搞定这两个需求,用PHP Simple HTML DOM Parser就能轻松实现。下面分步骤给你代码和详细解释:
1. 查找指定class的div元素并提取纯文本
首先确保你已经引入了PHP Simple HTML DOM Parser库(直接下载源码后include到项目里就行)。下面是通用实现代码,替换目标class名称即可复用:
// 引入Simple HTML DOM Parser库 include('simple_html_dom.php'); // 加载HTML内容(支持本地字符串或远程URL) $html = str_get_html('你的目标HTML内容'); // 查找所有带有指定class的div元素 $targetDivs = $html->find('div.your-target-class'); // 遍历提取纯文本内容 foreach ($targetDivs as $div) { // 提取纯文本,strip_tags确保清除所有HTML标签 $textContent = strip_tags($div->innertext); // 输出或按需处理内容 echo trim($textContent) . PHP_EOL; } // 清理资源 $html->clear();
2. 提取“Work Experience”与“EDUCATION AND TRAINING”之间的class为ft00的p元素中的日期文本
针对你提供的HTML片段,我们需要先定位到“Work Experience”标记点,再遍历后续元素直到遇到“EDUCATION AND TRAINING”,筛选出符合要求的日期内容。代码如下:
include('simple_html_dom.php'); // 你的HTML片段内容 $htmlStr = '<p class = "ft00">Introduction</p> <p class = "ft00">John Smith</p> <p class = "ft02">Email:</p> <p class = "ft00">John@gmail.com</p> <p class = "ft00">Work Experience</p> <p class = "ft00">27 July 2017</p> <p class = "ft02">ABC Company</p> <p class = "ft00">19 May 201...</p>'; $html = str_get_html($htmlStr); // 先找到"Work Experience"对应的p元素(用文本匹配比索引更可靠) $workExpMarker = null; foreach($html->find('p.ft00') as $p) { if(trim($p->plaintext) === 'Work Experience') { $workExpMarker = $p; break; } } if($workExpMarker) { $dateTexts = []; // 从标记点的下一个兄弟元素开始遍历 $nextElement = $workExpMarker->next_sibling(); while($nextElement) { // 到达"EDUCATION AND TRAINING"则停止遍历 if(trim($nextElement->plaintext) === 'EDUCATION AND TRAINING') { break; } // 筛选class为ft00的p元素,且内容符合日期格式 if($nextElement->tag === 'p' && $nextElement->class === 'ft00' && preg_match('/\d{1,2} [A-Za-z]+ \d{4}/', $nextElement->plaintext)) { $dateTexts[] = trim($nextElement->plaintext); } // 移动到下一个兄弟元素 $nextElement = $nextElement->next_sibling(); } // 输出提取到的日期内容 print_r($dateTexts); } $html->clear();
关键说明:
- 用文本匹配定位“Work Experience”,避免了索引定位因HTML结构变化失效的问题
- 用正则表达式
/\d{1,2} [A-Za-z]+ \d{4}/识别日期格式,确保只提取符合要求的内容
内容的提问来源于stack exchange,提问作者Zohaib
相关产品推荐
相关产品推荐

