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_encodeがReykjavík を null に変換することを意味します。
理由または代替手段を知っていますか?
ありがとう
後で編集:
あなたの助けのおかげで、私はこの行を修正しました:
$row[] = htmlentities($td->innertext, UTF-8);
...そして今、それは動作します。
ありがとうございました。