首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找带有特定类的<p>(段落)标记,并使用提取其内容

查找带有特定类的<p>(段落)标记,并使用提取其内容
EN

Stack Overflow用户
提问于 2018-05-07 12:23:54
回答 2查看 1.4K关注 0票数 1

我想在工作经验和教育培训之间找到带有ft04类的p标记,并从给定的html中提取包含公司名称的类文本。

代码语言:javascript
复制
<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>

到目前为止,我可以得到的是提取工作经验与教育和培训之间的所有数据,它正在正常工作,代码如下:-

代码语言:javascript
复制
$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);

我离得很近,但似乎找不到解决办法,任何帮助都将不胜感激:)

EN

回答 2

Stack Overflow用户

发布于 2018-05-07 13:06:20

以下是工作代码:)

代码语言:javascript
复制
$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);

输出

代码语言:javascript
复制
Array
(
    [0] => ABC Company
    [1] => XYZ Company
)

希望它能帮上忙

票数 0
EN

Stack Overflow用户

发布于 2018-05-10 10:59:45

您可以使用以下方法检查该类:

$keye->getAttribute("class") === "ft04"

您可以在while语句中设置nextSibling()以缩短代码:

while ($keye = $keye->nextSibling()) {

在遍历兄弟姐妹时,检查类名ft04并将plaintext添加到数组$items中。

您可以将代码更新为:

代码语言:javascript
复制
$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);

这会让你:

代码语言:javascript
复制
array(2) {
  [0]=>
  string(11) "ABC Company"
  [1]=>
  string(11) "XYZ Company"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50214165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档