Autor |
Nachricht |
karmacoder
Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht:
|
Verfasst Mi 08.02.2006 13:02
Titel
|
|
|
XSchinkenX hat geschrieben: | sollte funzen:
$pattern = "#<nurso(.*?)>#"; => $replace = "<nurso>"; |
ned lieber so?
$pattern = "#<nurso[^>]*>#"; => $replace = "<nurso>";
|
|
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Mi 08.02.2006 13:33
Titel
|
|
|
sollte eigentlich mit dem ? schon ungierig genug sein... klappt auch, habs grad mal getestet.
|
|
|
|
|
Anzeige
|
|
|
caZpa
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 08.02.2006 14:33
Titel
|
|
|
karmacoder hat geschrieben: | XSchinkenX hat geschrieben: | sollte funzen:
$pattern = "#<nurso(.*?)>#"; => $replace = "<nurso>"; |
ned lieber so?
$pattern = "#<nurso[^>]*>#"; => $replace = "<nurso>"; |
hm... für die chose bräuchte ich ja nicht mit regulären ausdrücken rumschlagen oder
es geht mir darum, eigenschaften zu erkennen
z.b.
[ns v:2] -> <nurso version="2">
[ns r:1] -> <nurso revision="1">
[ns v:2 r:1] -> <nurso version="2" revision="1">
ich weiß echt nicht wie ich das anstellen soll....
lasst mal ein paar groschen fallen...
...vielleicht finde ich ja das korn
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Mi 08.02.2006 14:37
Titel
|
|
|
caZpa hat geschrieben: | ich weiß echt nicht wie ich das anstellen soll.... |
Dafür gibts http://de.php.net/preg_replace
|
|
|
|
|
caZpa
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mi 08.02.2006 14:42
Titel
|
|
|
ja das ist mir wohl bekannt
aber ich blick in dem gewusel noch nicht durch
deswegen wollt ich das mal an nem kleinen beispiel nachvollziehen
wär nett wenn mir das kurz jemand ansagen könnte
|
|
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Mi 08.02.2006 15:46
Titel
|
|
|
Backreferenzes gehen in PHP mit nem Backslash und ner Zahl, in Perl mit nem $.
Beispiel:
Pattern: hans="([0-9]+)"
Replace: wurst="\1"
samma, jung. da gibts ne doku...:http://de.php.net/pcre
Zuletzt bearbeitet von am Mi 08.02.2006 15:51, insgesamt 1-mal bearbeitet
|
|
|
|
|
caZpa
Account gelöscht Threadersteller
Ort: -
|
Verfasst Di 14.02.2006 13:04
Titel
|
|
|
Zitat: | [ns v:2] -> <nurso version="2">
[ns r:1] -> <nurso revision="1">
[ns v:2 r:1] -> <nurso version="2" revision="1"> |
.
so ich bin jetzt schon ein gutes stück weiter
der regexCoach hat mir ganz gut geholfen
die korrekte regex ist:
Code: | #\[(ns) *(([rv]):(\d+))* *(([rv]):(\d+))* *\]# |
für das beispiel [ns v:3 h:6] , sehen die subpatterns wie folgt aus:
sp1: "ns"
sp2: "v:3"
sp3: "v"
sp4: "3"
sp5: "h:6"
sp6: "h"
sp7: "6"
jetzt weiß ich nicht wie ich das per preg_replace richtig austausche
Code: | preg_replace("#\[(ns) *(([rv]):(\d+))* *(([rv]):(\d+))* *\]#ie", "<nurso ", $string); |
geht das überhaupt so in einem rutsch? ich glaube fast nicht...
ich würde jetzt ertsmal mit preg_match gucken wo es welches element überhaupt gibt
sie in logische variablen packen und dann per preg_preplace ersetzen
geht doch bestimmt einfacher oder
ich hab mir das ungefähr so vorgestellt:
Code: | echo $matches = preg_match_all('#\[(ns) *(([rv]):(\d+))* *(([rv]):(\d+))* *\]#i', $string, $subpat, PREG_PATTERN_ORDER);
switch($matches){
case 0: break;
case 1: $string = str_replace('[ns]', '<nurso>', $string);
break;
case 3: if(strtolower($subpat[3])=='v') $pattern3 = 'version';
if(strtolower($subpat[3])=='r') $pattern3 = 'revision';
$string = preg_replace('#\[(ns) *([rv]):(\d+)* *([rv]):(\d+)* *\]#ie', '<nurso '.$pattern3.'="'.${4}.'">', $string);
break;
case 6: if(strtolower($subpat[3])=='v') $pattern3 = 'version';
if(strtolower($subpat[3])=='r') $pattern3 = 'revision';
if(strtolower($subpat[6])=='v') $pattern6 = 'version';
if(strtolower($subpat[6])=='r') $pattern6 = 'revision';
$string = preg_replace('#\[(ns) *([rv]):(\d+)* *([rv]):(\d+)* *\]#ie', '<nurso '.$pattern3.'="'.${4}.'" '.$pattern6.'="'.${7}.'">', $string);
break;
default: echo '[nurso] ist fehlerhaft!<br>';
break;
} |
mal abgesehen das mir die achterbahn zu groß ist
ist sie auch noch fehlerhaft...
nichtmal das default echo wird ausgegeben. die seite hört nicht auf zu laden...
was mach ich da falsch?
bin für jeden tipp dankbar!
Zuletzt bearbeitet von am Di 14.02.2006 13:20, insgesamt 1-mal bearbeitet
|
|
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Di 14.02.2006 13:19
Titel
|
|
|
Also wenn die Nursos verschachtelt sind, kannstes mit regex wirklich vergessen... ansonsten sollte das eigentlich kein problem sein.
Der Einfachkeit halber kannst du erst die Elemente rausholen, und in einem zweiten Schritt die Attribute analysieren
|
|
|
|
|
|
|
|
Ähnliche Themen |
reguläre ausdrücke
[PHP] Reguläre Ausdrücke
[Erledigt] [PHP] Reguläre Ausdrücke
[Tutorial gesucht]Reguläre Ausdrücke
|
|