首页 > 解决方案 > 输入字段中的简单 HTML DOM 解析器

问题描述

我试图从 DOM 解析器中获取所有结果,但我只得到输入字段中的最后一个标签。如果我回显 $link 不是问题。有没有一种解决方案可以像我从回声中一样获取所有文本?

<?php
include_once('simple_html_dom.php');

// Create DOM from URL or file
$link = "https://www.sofascore.com/fr/sevilla-real-betis/qgbsIgb";

foreach ($html->find('div.Header__Main-sc-1dyxed1-0.hkVBhG ul li') as $element){
    $links = $element->find('a');
    foreach ($links as $link) {
        echo $link->plaintext.'<br/>';
    }
}
?>

<input type="text" name="name" value="<?php echo $link->plaintext?>"><br>

这是github:https ://github.com/inbazhlekov/domm

我希望输入字段中的值为:“Football Espagne LaLiga”,而不仅仅是“LaLiga”。

标签: phphtmlparsingdomsimple-html-dom

解决方案


该循环将覆盖它们各自循环的每次迭代$element$link如果要在循环后访问所有值,则需要将值存储在变量中。

您可以将它们存储在一个数组中:

$link = "https://www.sofascore.com/fr/sevilla-real-betis/qgbsIgb";

// Initiate the array we'll use to store the values
$name = [];

foreach ($html->find('div.Header__Main-sc-1dyxed1-0.hkVBhG ul li') as $element){
    $links = $element->find('a');

    foreach ($links as $link) {
        // Push the values into our array instead of echoing them
        $name[] = $link->plaintext;
    }
}
?>

当你想输出它时,用空格作为分隔符来分解数组:

<input type="text" name="name" value="<?= implode(' ', $name)  ?>"><br>

推荐阅读