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