简单 PHP DOM 解析器在明文中添加不需要的空格

Simple PHP DOM Parser adds unwanted spaces in plaintext

我正在使用 PHP 简单 HTML Dom 解析器从 HTML table 中提取单元格值内容并将它们存储在数组中。

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>

期望输出:

soy

fui

era

haber serí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 元素前面加上不需要的 space(请参阅下面的第三项):

soy

fui

er a

haber sería

关于解决这个问题有什么建议吗?我不能任意删除 spaces,因为某些单元格碰巧确实有多个单词,如给定示例中的最后一项。

使用 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>';
}

输出:

soy

fui

era

haber sería