简单的PHP DOM Parser以明文

时间:2017-01-17 16:20:27

标签: php simple-html-dom

我正在使用PHP Simple HTML Dom Parser从HTML表中提取单元格值内容并将它们存储在数组中。

HTML

<td class="inflexion">so<span class="deviation">y</span></td>
<td class="inflexion"><span class="deviation">fui</span></td>
<td class="inflexion"><span class="deviation">er</span>a</td>
<td class="inflexion">haber sería</td>

期望的输出

  

大豆

     

FUI

     

时代

     

habersería

PHP

function getvariations($conjtables){
    $conjtables = str_get_html($conjtables);
    $variations = [];
    foreach ($conjtables->find('td[class=inflexion]') as $inflexion) {
        $variations[] = $inflexion->plaintext;
    }
    return array_unique($variations);
}
$variations = getvariations($conjtables);
foreach ($variations as $variation) {
    echo $variation . '<br>';
}

然而,这可行,输出似乎在一些span元素的前面出现了一个不受欢迎的空间(参见下面的第三项):

  

大豆

     

FUI

     

呃a

     

habersería

有关修复此问题的任何建议吗?我无法任意删除空格,因为有些单元格确实有多个单词,如给出的示例中的最后一项。

1 个答案:

答案 0 :(得分:2)

innertextstrip_tags一起使用,而不是plaintext

function getvariations($conjtables){
    $conjtables = str_get_html($conjtables);
    $variations = [];
    foreach ($conjtables->find('td[class=inflexion]') as $inflexion) {
        $variations[] = strip_tags($inflexion->innertext);
    }
    return array_unique($variations);
}
$variations = getvariations($conjtables);
foreach ($variations as $variation) {
    echo $variation . '<br>';
}

输出:

  

大豆

     

FUI

     

时代

     

habersería