私はカールを使用してWeb外部サーバーと通信しますが、応答のタイプはhtmlです.Jsonコード(4000行以上)に変換できましたが、どのように私の結果を含む指定された行を取得するアイデア。何か案が ?ここでcUrlを使用して指定行を取得する方法PHP
は私のカールコードです:
require_once('getJson.php');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.reputationauthority.org/domain_lookup.php?ip=website.com&Submit.x=9&Submit.y=5&Submit=Search');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = '<<<EOF'.$data.'EOF';
$json = new GetJson();
header("Content-Type: text/plain");
$res = json_encode($json->html_to_obj($data), JSON_PRETTY_PRINT);
$myArray = json_decode($res,true);
getJson.php
class GetJson{
function html_to_obj($html) {
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
return $this->element_to_obj($dom->documentElement);
}
function element_to_obj($element) {
if ($element->nodeType == XML_ELEMENT_NODE){
$obj = array("tag" => $element->tagName);
foreach ($element->attributes as $attribute) {
$obj[$attribute->name] = $attribute->value;
}
foreach ($element->childNodes as $subElement) {
if ($subElement->nodeType == XML_TEXT_NODE) {
$obj["html"] = $subElement->wholeText;
}
else {
$obj["children"][] = $this->element_to_obj($subElement);
}
}
return $obj;
}
}
}
について私の考えは、(のようなものやって2175 lignを達成するために代わりにブラウズ行は次のとおりです。 '子供' [$データを子ども] ['子供'] ['子供'] ['子供'] ['子供'] [[子供]] [0] ['子供'] [ 1] ['children'] ['children'] ['children'] ['children'] [2] ['children'] [0] ['children'] [0] ['html']は私には良いアイデア)、私はそれに直接行きたいです。
どのようにJSONに変換しましたか?通常、データを解析し、データを変数(配列/オブジェクト)に入れ、JSONにエンコードします。最後のステップをスキップして、データを取得します。より詳しいヘルプが必要な場合は、コードとJSON構造を表示してください。 – GolezTrol
こんにちは、私はいくつかの情報を追加しました。 – Zacki