2016-07-27 8 views
2

Ich versuche, die ordentlich Funktionen zu verwenden, um eine HTML-Zeichenfolge zu bereinigen, die keinen abschließenden </hr> Tag haben:Tidy nicht schließt <hr> Tag

<html> 
<head><title>301 Moved Permanently</title></head> 
<body bgcolor="white"> 
<center><h1>301 Moved Permanently</h1></center> 
<hr><center>nginx</center> 
</body> 
</html> 

aber wenn ich die folgenden Zeilen:

$tidy = tidy_parse_string($data); 
tidy_clean_repair($tidy); 
echo ($tidy); 

die </hr> Tag wird nicht hinzugefügt wird, Ausgeben:

<html> 
<head> 
<title>301 Moved Permanently</title> 
</head> 
<body bgcolor='white'> 
<center> 
<h1>301 Moved Permanently</h1> 
</center> 
<hr> 
<center>nginx</center> 
</body> 
</html> 

Ist die aufgeräumte Bibliothek nicht in der Lage, ein <hr> Tag zu schließen oder fehle ich etwas?

+0

was meinst du damit Sie ''


haben '', sein ein Hohlraumelement, es muss nicht – Ghost

+0

Nun geschlossen werden, wenn ich ein SimpleXMLElement aus dem unverschlossenen String machen versuchen, ich eine Fehlermeldung erhalten, aber wenn es geschlossen ist, gibt es keine Fehler. Deshalb brauche ich es geschlossen. – MarksCode

+0

dann verwenden Sie die weniger strenge 'DOMDocument' – Ghost

Antwort

1

Nun, die <hr> (thematische Pause) Tag ist nicht eine geschlossen werden.

Von W3C -> hr:

Das hr-Element ist ein Hohlraumelement. Ein hr-Element muss ein Start-Tag haben, aber darf kein End-Tag haben.


Wenn Sie wirklich haben, können Sie dies tun:

$html = str_replace('<hr>', '<hr/>', $html); 

Das wird vorgeben das Tag selbstschließ und verhindern SimpleXMLElement aus gehen hysterisch nicht schließen .

+0

Ich versuche, ein SimpleXMLElement aus der Zeichenfolge zu machen, so dass ich es geschlossen brauche. Wenn es geschlossen ist, bekomme ich keine Fehler, aber wenn es offen ist, kann ich es nicht tun. – MarksCode

+0

Ja, ich muss vielleicht am Ende damit fertig werden. Ich bin neu in PHP, also versuche ich herauszufinden, wie ich eine Funktion machen kann, die nur ein schließendes Tag direkt vor dem Tag einfügt. – MarksCode

+0

Ah. Ja, das scheint mit einem SimpleXMLElement zu funktionieren. Vielen Dank. – MarksCode