3
Ich versuche, einen HTML-Parser zu machen, aber wenn ich den html Ich mag dieseWie ignoriert man CDATA-Tags?
Warnung Warnungen erhalten laden: DOMDocument :: loadhtml() [domdocument.loadhtml]: in CDATA 0x1C in Entity Ungültige Zeichen, Zeile : 1302
Hier ist der Code verwende ich
class Parser
{
public $url=null;
public $html=null;
public $tidy=null;
public $head=null;
public $head_xpath=null;
function __construct($url){
$this->url=$url;
$this->html=file_get_contents($this->url);
$this->tidy=tidy_parse_string($this->html);
$this->head=new DOMDocument();
$this->head->loadHTML($this->tidy->head());
$this->head_xpath= new DOMXPath($this->head);
}
}
$x=new Parser("http://www.guardian.co.uk/politics/2012/mar/24/vince-cable-coalition-banking-row");
ich um suchte und fand die LIBXML_NOCDATA konstant, aber ich weiß nicht, wie es zu setzen. Also, wie könnte ich CDATA vollständig ignorieren?
Und ich denke, Blind ersetzen im Inhalt ist keine Option, weil es in einem Artikel sein könnte? –
@Artjom Kurapov Ich habe versucht, die cdata-Tags durch str_replace zu ersetzen, aber es gibt immer noch Warnungen und ich kann nicht immer sicher sein, dass ich sie entfernt habe, weil manche Leute sie wie // (mit vielen Leerzeichen) schreiben nope
Können Sie die fehlerhafte Zeile aus der XML-Datei veröffentlichen? Wenn es gut formatierte CData ist, sollte es diesen Fehler nicht werfen. Sieht so aus, als ob Sie möglicherweise ein Problem mit der Zeichencodierung haben. –