2012-04-02 12 views
0

ich diese Seite bin Schaben:
http://kat.ph/search/example/?field=seeders&sorder=descMit DOMDocument :: PreserveWhitespace = false und noch Leerzeichen PHP bekommen

Auf diese Weise:

... 
curl_setopt($curl, CURLOPT_URL, $url); 
$header = array (
    'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3', 
    'Accept-Encoding:gzip,deflate,sdch', 
    'Accept-Language:en-US,en;q=0.8', 
    'Cache-Control:max-age=0', 
    'Connection:keep-alive', 
    'Host:kat.ph', 
    'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19', 
); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19'); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
curl_setopt($curl, CURLOPT_REFERER, 'http://kat.ph'); 
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate,sdch'); 
curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_TIMEOUT, 10); 

$html = curl_exec($curl); 
$dom = new DOMDocument; 
$dom->preserveWhiteSpace = FALSE; 
@$dom->loadHTML($html); 

(hierfür den Browser imitieren Musste funktionieren, also CURL)

Aber ich bekomme immer noch DOMNodes vom Typ #text, die nur aus Leerzeichen bestehen.

Irgendwelche Ideen, warum das passiert und wie man es vermeidet?

Antwort

3

Es sieht so aus, dass die preserveWhiteSpace Eigenschaft einfach sets die libxml2 XML_PARSE_NOBLANKS Flagge, die nicht immer zuverlässig ist wie this thread vermuten lässt. Insbesondere beim Parsen ohne eine DTD, wie in diesem Fall, behält der Parser unter bestimmten Umständen leere Textelemente (hauptsächlich wenn sie Geschwister anderer Nicht-Text-Elemente sind).

Der Thread möglicherweise ein bisschen datiert, aber das Verhalten still exists as described.

+0

Sehr gut! Danke für die Einsicht, das werde ich mir in Zukunft merken. – flu

+5

Zwei dieser Links sind tot. – ow3n