简单 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,因为某些单元格碰巧确实有多个单词,如给定示例中的最后一项。
使用 innertext
和 strip_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
我正在使用 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,因为某些单元格碰巧确实有多个单词,如给定示例中的最后一项。
使用 innertext
和 strip_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