Forum Doku Wiki Blog

Forumsarchiv 2002, Juni
Reguläre Ausdrücke

archivierte Beiträge lesen

  1. (PHP) Reguläre Ausdrücke von uepselon, 07. 06. 2002, 11:27

Reguläre Ausdrücke

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

Reguläre Ausdrücke

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

Brauche nochmal Hilfe, optimierung des Ausdrucks

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

Brauche nochmal Hilfe, optimierung des Ausdrucks

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

Brauche nochmal Hilfe, optimierung des Ausdrucks

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