我想找到ft00类在工作经验和教育和培训之间,并提取包含给定html日期的类文本。
<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 2018</p>
<p class ="ft02">XYZ Company</p>
<p class = "ft00">EDUCATION AND TRAINING</p>到目前为止,我可以得到的是提取、工作经验、和教育和培训之间的所有数据,它正在正常工作,代码如下:
$fexp = $html->find('p[plaintext^=Work Experience]');
$items = array();
foreach ($fexp as $keye) {
while ( $keye->nextSibling() ) {
if ( $keye->nextSibling() == TRUE ) {
$keye = $keye->nextSibling();
$varce = $keye->plaintext;
}
if ( trim($varce) == "EDUCATION AND TRAINING" ){
break;
}
//$test[] = $collection;
$items[] = $varce;
// echo $varce;
}
}
var_dump($items);我离得很近,但似乎找不到解决办法,任何帮助都将不胜感激:)
发布于 2018-05-05 17:04:27
以下是正确的工作守则:-
$test = array();
$matching = false;
$collection = $html->find('p.ft00');
foreach ($collection as $tkey) {
if ($tkey->plaintext == "WORK EXPERIENCE" || $matching ) {
$test[] = $tkey->plaintext;
$matching = true;
}
if ( $tkey->plaintext == "EDUCATION AND TRAINING") {
break;
}
}
var_dump($test); 产出:-
Array
(
[0] => Work Experience
[1] => 27 July 2017
[2] => 19 May 2018
[3] => EDUCATION AND TRAINING
)发布于 2018-05-05 15:38:11
使用DOMDocument和DOMXPath,您可以像下面这样做,我从未使用过简单的HTML,但我假设它有XPath。
<?php
$dom = new DOMDocument();
$dom->loadHtml('
<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 2018</p>
<p class ="ft02">XYZ Company</p>
<p class = "ft00">EDUCATION AND TRAINING</p>
', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$result = [];
$matching = false;
foreach ($xpath->query("//p[contains(@class, 'ft00') or contains(@class, 'ft02')]/text()") as $p) {
if ($p->nodeValue === 'Work Experience' || $matching) {
$result[] = $p->nodeValue;
$matching = true;
}
if ($p->nodeValue === 'EDUCATION AND TRAINING') {
break;
}
}
print_r($result);结果:
Array
(
[0] => Work Experience
[1] => 27 July 2017
[2] => ABC Company
[3] => 19 May 2018
[4] => XYZ Company
[5] => EDUCATION AND TRAINING
)https://stackoverflow.com/questions/50190956
复制相似问题