我想在工作经验和教育培训之间找到带有ft04类的p标记,并从给定的html中提取包含公司名称的类文本。
<p class = "ft00">Introduction</p>
<p class = "ft00">John Smith</p>
<p class = "ft02">Email:</p>
<p class = "ft02">Phone Number:</p>
<p class = "ft00">John@gmail.com</p>
<p class = "ft00">Work Experience</p>
<p class = "ft00">27 July 2017</p>
<p class = "ft04">ABC Company</p>
<p class = "ft00">19 May 2018</p>
<p class ="ft04">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-07 13:06:20
以下是工作代码:)
$html = '<p class = "ft00">Introduction</p>
<p class = "ft00">John Smith</p>
<p class = "ft02">Email:</p>
<p class = "ft02">Phone Number:</p>
<p class = "ft00">John@gmail.com</p>
<p class = "ft00">Work Experience</p>
<p class = "ft00">27 July 2017</p>
<p class = "ft04">ABC Company</p>
<p class = "ft00">19 May 2018</p>
<p class ="ft04">XYZ Company</p>
<p class = "ft00">EDUCATION AND TRAINING</p>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$items = array();
foreach ($doc->getElementsByTagName('p') as $p) {
if (strtolower(trim($p->nodeValue)) == 'work experience') {
$found = true;
}
if (isset($found) && strtolower(trim($p->getAttribute('class'))) == 'ft04') {
$items[] = $p->nodeValue;
}
if (strtolower(trim($p->nodeValue)) == 'education and training') {
break;
}
}
print_r($items);输出
Array
(
[0] => ABC Company
[1] => XYZ Company
)希望它能帮上忙
发布于 2018-05-10 10:59:45
您可以使用以下方法检查该类:
$keye->getAttribute("class") === "ft04"
您可以在while语句中设置nextSibling()以缩短代码:
while ($keye = $keye->nextSibling()) {
在遍历兄弟姐妹时,检查类名ft04并将plaintext添加到数组$items中。
您可以将代码更新为:
$fexp = $html->find('p[plaintext^=Work Experience]');
$items = array();
foreach ($fexp as $keye) {
while ($keye = $keye->nextSibling()) {
if ($keye->plaintext === "EDUCATION AND TRAINING") {
break;
}
if($keye->getAttribute("class") === "ft04") {
$items[] = $keye->plaintext;
}
}
}
var_dump($items);这会让你:
array(2) {
[0]=>
string(11) "ABC Company"
[1]=>
string(11) "XYZ Company"
}https://stackoverflow.com/questions/50214165
复制相似问题