3

我一直在研究 PHP 的简单 html dom,它运行良好。问题是当我尝试将返回的值添加到 PHP 数组时。

我有一个示例,您可以在其中看到结果http://fae.ctrl.fo/plane_script/,下面的脚本是从该链接提供数据的内容。

<?PHP

include('simple_html_dom.php');

$resultSet = array();
$html = file_get_html('http://212.55.50.147');
foreach($html->find('tr[class^=FlightScheduleItem]') as $tr)
    {
        $row = array();
        foreach($tr->find('td') as $td) 
        {
            echo $td->innertext." ";
            $row[] = $td->innertext; 
        }
        $resultSet[] = $row;
    }

    echo "<br/><br/><br/>";

echo $_GET['callback'] . '(' .json_encode($resultSet) . ')';
?>

如您所见,我正在打印在td标记中找到的所有值,并将它们保存在同一循环中的数组中。如果您检查输出,您会发现在数组中找不到“ Reykjavík ”。

你知道为什么吗?

稍后编辑:

如果我使用 PHP 中的 print_r 函数,我可以在我的数组中找到这个词。这意味着json_encodeReykjavík 转换为 null

你知道为什么或替代方案吗?

谢谢

稍后编辑:

感谢您的帮助,我修改了这一行:

$row[] = htmlentities($td->innertext, UTF-8); 

...现在它可以工作了。

谢谢你。

4

1 回答 1

6

似乎json_encode需要 UTF-8 输入,但 PHP 的默认值是 ISO-8859-1。

你应该能够做到这一点:

$resultSet[] = htmlentities($row, UTF-8)

json_encode这应该将拉丁字符编码为 UTF-8,允许它在函数中通过(编码) 。

bugs.php.net上找到的解决方案

于 2012-09-03T12:48:19.847 回答