Reguläre Ausdrücke
uepselon
- php
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
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
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 ("/="/",$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
Hallo!
$str = "my="custom.html";my="base.tpl";;mas='true.tpl'";
preg_match_all ("/="/",$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
Hi!
preg_match_all ("/="/",$str,$reg);
^
vielleicht doch lieber 5, dann ist auch sowas wie .shtml mit abgedeckt!
Grüße
Andreas