phpbar.de logo

Mailinglisten-Archive

[php] Wildcard für eregi_replace (Mehrere Ergebnisse)

[php] Wildcard für eregi_replace (Mehrere Ergebnisse)

Steffen Sander s.sander_(at)_crs.de
Fri, 17 Mar 2000 11:28:36 +0000


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