2010-09-02 8 views
43

Mögliche Duplizieren:
Best methods to parse HTMLPHP Parse HTML-Code

Wie kann ich HTML-Code in einer PHP-Variablen gehalten analysieren, wenn es so etwas wie:

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG! 

Ich möchte zu nur erhalten Sie den Text, der zwischen den Überschriften ist und ich verstehe das Es ist keine gute Idee, reguläre Ausdrücke zu verwenden.

+4

@everyone, der das geschlossen hat, ist doppelt vorhanden. Dies ist anders, weil OP nicht den Text "T1, T2, T3" wünscht, sondern der Text nach einer Überschrift endet und bevor die nächste Überschrift beginnt. z.B. 'Lorem ipsum'. Also, * das * ist anders. Bitte schau es dir an. – shamittomar

Antwort

105

Verwenden Sie PHP Document Object Model:

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    $DOM = new DOMDocument; 
    $DOM->loadHTML($str); 

    //get all H1 
    $items = $DOM->getElementsByTagName('h1'); 

    //display all H1 text 
    for ($i = 0; $i < $items->length; $i++) 
     echo $items->item($i)->nodeValue . "<br/>"; 
?> 

Diese gibt als:

T1 
T2 
T3 

[EDIT]: Nach der OP Klarstellung:

Wenn Sie wollen, dass der Inhalt wie Lorem ipsum. etc, können Sie direkt auf diese regex verwenden:

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    echo preg_replace("#<h1.*?>.*?</h1>#", "", $str); 
?> 

diese Ausgänge:

Lorem ipsum.The schnell Rotfuchs ...... springt über den faulen braun FROG

+0

Danke, aber ich brauche den Text zwischen

wie in: "Lorem ipsum.", "Der schnelle rote Fuchs ..." usw. Also nicht der Text zwischen H1-Tags, sondern der Text zwischen einer Endung Tag und ein Start

. – Francisc

+0

@Francisc, ich habe die Antwort aktualisiert. – shamittomar

+0

Das ist näher, danke. Ich werde versuchen, klarer zu sein: Ich möchte den Text zwischen Überschriften erhalten, seine Länge zählen und entscheiden, ob ich einen Teil davon verstecken möchte. Sie sind die Antwort ist sehr hilfreich, obwohl. Aber was ich tun möchte, ist, den ganzen Text zu behalten, fügen Sie einfach ein bisschen HTML hinzu, um einen Teil davon zu verstecken. – Francisc