Reguläre Ausdrücke in PHP (Kommentare auslesen)

lapared

Mitglied
Hallo zusammen,

ich habe folgendes Problem:

Ich möchte aus einer HTML - Seite Inhalt auslesen.
Dieser Inhalt befindet sich zwischen 2 Kommentaren:
<!--content-->
<!--end_content-->

Ich habe jetzt verschiedene Varianten versucht das hinzubekommen...
Den Titel - Tag kann ich z.b. auslesen.

Hier mal das was ich versucht habe:
$ergebnis = preg_match('/<!--content-->(.*?)<\!--end_content-->/s', $data, $entry);
$ergebnis = preg_match('/<!--content-->(.*)<!--end_content-->/i', $data, $entry);

Irgendwo ist der Wurm drin. Und ich komm nicht drauf.

Hoffentlich weiss jemand Rat.

Grüsse.
 
PHP:
<?php
$file = fopen("http://www.ffa4dow.de/seite.html","r");
$file_content = "";
$site_content = "";
$found_end    = FALSE;

$tag_open  =  htmlentities(chr(ord("<")));
$tag_close =  htmlentities(chr(ord(">")));
$pattern = "/($tag_open\!--)\s*([a-zA-Z0-9_-\s]+)\s*(--$tag_close)/";

while($data = fgets($file,255)){
    $file_content = htmlspecialchars($data);

    if(preg_match_all($pattern ,$file_content,$matches) ){
            
        while($file_content = fgets($file,255)){
           if(!preg_match($pattern, htmlspecialchars($file_content),$matches)){
                $site_content .= trim(nl2br($file_content));
           }else{
                $found_end = TRUE;
                break;
            }
        }
    }
  
  if($found_end){
     break;
  }  
}
fclose($file);

echo $site_content;
?>

Die Seite selber

Code:
<html>
</body>
<!-- content -->
  das ist der Seiteninhalt
  und noch mehr inhalt
<!-- end content -->
</body>
</html>

Ausgabe:

Code:
  das ist der Seiteninhalt
  und noch mehr inhalt

Die Variablen $tag_open und $tag_close musste ich definieren da er mir immer &lt; ausgeben hat in der Quellcode Ansicht der HTML Seite , warum wieso weshalb wüsste ich im Moment auch gern aber es funktioniert soweit auf meinen Webspace.

Ich hoffe das hilft Dir weiter :)
 
Zuletzt bearbeitet:
Probier mal Folgendes:
PHP:
preg_match_all('/<!--content-->(.*?)<!--end_content-->/s', $string, $matches)
 
Zurück