Der folgende Beitrag wurde am 07. 06. 2002, 11:27 Uhr von uepselon veröffentlicht.
Hallo,
ich hab nochmal ein Problem mit Regulären Ausdrücken
und zwar habe ich einen String:
$str = "my=\"custom.tpl\";my=\"base.tpl\"";
Sieht im Browser dann so aus -> my="custom.tpl";my="base.tpl"
Nun will ich nach den Dateinamen suchen und diese alle in ein Array speichern.
Hab als ansatz ereg() versucht:
ereg ("=\"(.*\.tpl)",$str,$reg);
echo $reg[1];
enthält der String nur einen Dateinamen Funktioniert es, sobald es zwei werden tun sich zwei
Probleme auf:
1. Gesucht wird von =" bis zum letzten .tpl und nicht bis zum nächsten.
Hab auch schon mit ? probiert aber das geht irgednwie nur in Perl
2. Wie schaffe ich es alle Dateien auf einen Schlag in ein Array zu bekommen?
Gruß
ueps
Der folgende Beitrag wurde am 07. 06. 2002, 11:34 Uhr von lulu veröffentlicht.
Hallo Y
schau Dir mal das an
http://www.php.net/manual/en/function.preg-match-all.php
und auch
http://www.php.net/manual/en/pcre.pattern.modifiers.php
bes. U - ungreedy
damit solltest Du eine Lösung "zusammenschrauben" können
Viele Grüße
lulu
Der folgende Beitrag wurde am 07. 06. 2002, 12:36 Uhr von uepselon veröffentlicht.
Hi,
Danke das hat mir schon mal weitergeholfen, hab nun folgendes
mal probiert:
$str = "my=\"custom.html\";my=\"base.tpl\";;mas='true.tpl'";
preg_match_all ("/[=\"](.*?\.tpl)/",$str,$reg);
for ($i=0; $i< count($reg[0]); $i++) {
$site = $reg[1][$i];
$str = preg_replace("/$site/","shop.php?$site",$str);
}
echo $str;
Das klaptt auch wenn nur .tpl Links im String sind, nur wenn
z.B. ein normaler .html Link drin ist sucht preg_match_all
von =" bis zum nächsten .tpl was natürlich unweigerlich zu fehlern führt.
Kann mir evtl. jemand sagen wie der Ausdruck aussehen muss damit wirklich nur die links in denen *.tpl vorkommt ins array geschrieben werden.
Thx
ueps
Der folgende Beitrag wurde am 07. 06. 2002, 19:43 Uhr von Andreas veröffentlicht.
Hallo!
> $str = "my=\"custom.html\";my=\"base.tpl\";;mas='true.tpl'";
> preg_match_all ("/[=\"](.*?\.[a-zA-Z]{2,4})/",$str,$reg);
^^^^^^^^^^^^^
wäre da mein Vorschlag. Damit hast Du alle Endungen die aus großen und kleinen Buchstaben bestehen, von 2-4 Zeichen länge abgedeckt!
> for ($i=0; $i< count($reg[0]); $i++) {
> $site = $reg[1][$i];
> $str = preg_replace("/$site/","shop.php?$site",$str);
> }
Grüße
Andreas
Der folgende Beitrag wurde am 07. 06. 2002, 19:47 Uhr von Andreas veröffentlicht.
Hi!
> > preg_match_all ("/[=\"](.*?\.[a-zA-Z]{2,5})/",$str,$reg);
^
vielleicht doch lieber 5, dann ist auch sowas wie .shtml mit abgedeckt!
Grüße
Andreas
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4