2012-05-04 9 views
5

Ich habe eine Menge HTML-Daten, die ich mit PHP in eine PDF-Datei schreibe. Im PDF möchte ich, dass das gesamte HTML entfernt und aufgeräumt wird. So zum Beispiel:HTML mit PHP bereinigen, um saubere Zeichenfolge zu erstellen

<ul> 
    <li>First list item</li> 
    <li>Second list item which is quite a bit longer</li> 
    <li>List item with apostrophe 's 's</li> 
</ul> 

werden sollen: note

First list item&#8232; 

    Second list item which is quite a bit 
longer&#8232; 

    List item with apostrophe &rsquo;s &rsquo;s 

auch die Vertiefung des Ausgangs:

First list item 
Second list item which is quite a bit longer 
List item with apostrophe 's 's 

Allerdings, wenn ich einfach strip_tags() verwenden, ich so etwas wie diese.

Gibt es Tipps, wie Sie den HTML-Code sauber und sauber aufbereiten, ohne unordentliche Leerzeichen und Sonderzeichen?

Thanks :)

+2

Ich bezweifle, dass 'strip_tags()' alleine Ihre Entitäten encodieren wird. Bist du sicher, dass du nicht irgendwo einen Anruf zu "htmlentities" verpasst? – Yoshi

+1

Die Einrückung ist genau das, was ich erwarten würde, PHP strippt die Tags, aber nicht den zusätzlichen Text um sie herum. – scragar

+0

Meinst du, ich * sollte * oder * sollte nicht htmlentities() irgendwo verwenden? In diesem Moment bin ich nicht. Die HTML-Daten stammen direkt aus einer Datenbank. – Rein

Antwort

3

Sie das Ergebnis strip_tags dekodieren kann html_entity_decode mit oder entfernen Sie sie preg_replace mit:

$text = strip_tags($html_text); 
$content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text); 

und entfernen Sie Leerzeichen am Anfang Ihrer Linien ltrim verwenden:

$content = join("\n", array_map("ltrim", explode("\n", $content))); 

um Apostrophe stattdessen verwenden diese:

$text = strip_tags($html_text); 
$text = str_replace("&rsquo;","'", $text); 
$content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$text); 
+0

Das ist großartig! Fast dort. Das einzige ist, dass die Apostrophe jetzt komplett weg sind. Kann das mit einer kleinen Korrektur behoben werden? – Rein

+0

hast du html_entity_decode oder preg_replace benutzt? –

+0

Ich habe preg_replace wie in Ihrer Antwort verwendet. – Rein

0

Verwendung PHP Tidy Bibliothek Ihre HTML zu reinigen. Aber in Ihrem Fall würde ich DOMDocument Klasse verwenden, um Daten von HTML zu erhalten.

3

Die Zeichen scheint HTML-Entitäten zu sein. Versuchen:

html_entity_decode(strip_tags($my_html_code)); 
+0

Aus irgendeinem Grund ändert das nichts an ihnen ... – Rein

+0

Perfekt, das war ein Leckerbissen für das, worüber ich ein Problem hatte. – Railto

Verwandte Themen