Mailinglisten-Archive |
Hallo Mark, Die Mail kommt sicher etwas später, als gewünscht, aber dafür denke ich, das das Problem damit gelöst ist. Nach mehreren Versuchen mit diversen Regex Konstrukten habe ich die Aufgabe mit substr gelöst. > <wichtig>Hier steht das, was ich haben will</wichtig> > <anfang>Hier steht Text</ende> > <wichtig>Hier steht das, was ich haben will</wichtig> > <anfang>Hier steht nochmal Text</ende> > <wichtig>Hier steht das, was ich haben will</wichtig> > <anfang>Hier steht nochmehr Text</ende> > Wie kann ich PHP klar machen, daß ich aus obigem Text > _nur_ jeweils die Zeile > <wichtig>Hier steht das, was ich haben will</wichtig> > rausziehen will? function ereg_code( $str_text, $run_patt, $end_patt ) {//Autor: Steffen Sander mail:s.sander_(at)_crs.de, crdate 17.03.2000 //Funktion ist frei verfügbar und kann angepasst werden, //unter der Bedingung, dass min. die Autor Kommentarzeile //erhalten bleibt. Vielen Dank //Eine zu prüfende Datei komplett als ein String einlesen //$run_patt = "<%";//statt ASP-Tags auch PHP-Tags usw. //$end_patt = "%>";//statt ASP-Tags auch PHP-Tags usw. $len_text = strlen( $str_text ); $len_runpatt = strlen( $run_patt ); $len_endpatt = strlen( $end_patt ); $start = 0; $posrun = strpos( $str_text, $run_patt ); $posend = strpos( $str_text, $end_patt ); for($i=0; $i < $len_text; $i++ ) { //substr der Code-Zeichen: $tmp_str= substr( $str_text, $posrun + $len_runpatt, $posend - $posrun - $len_runpatt); //Testausgabe: (Das Rautezeichen soll Leerzeichen markieren) //echo "\n<br>".htmlspecialchars( str_replace(" ", "#", $tmp_str) ); //echo " ($posrun ($len_runpatt)- $posend($len_endpatt))<br>\n"; $return_code .= $tmp_str."<br>\n"; //neue Startposition und Menge berechnen: $posrun = strpos( $str_text, $run_patt, $posend + $len_endpatt ); $posend = strpos( $str_text, $end_patt, $posrun ); if( !$posend || !$posrun ) { //echo "\n\n<br>Ende beim ".($i+1).". Durchlauf.<br>\n"; return $return_code;//durch return wird die Schleife automatisch beendet }//if( $posrun ) }//for($i=0; $i < $len_text; $i++ ) }//function ereg_code( $str_text, $run_patt, $end_patt ) echo "<p>".ereg_code( $str_text, "<wichtig>", "</wichtig>" ); $str_text enthält die eingelesene Datei und die anderen beiden Parameter erklären sich hoffentlich von selbst. Wenn noch Fragen auftreten dann bitte per PM. Gruß --Steffen -- Steffen Sander - Internet/Intranet Softwareentwicklung CRS Computer Register Service GmbH - Ritterstr. 11 - 10969 Berlin mailto:s.sander_(at)_crs.de -Tel: +49-30-614 60 01 - Fax: +49-30-614 85 81 http://www.crs.de - http://www.markthalle.de - http://www.stadtnetz.net
php::bar PHP Wiki - Listenarchive