mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 22:40 Benutzername: Passwort: Auto-Login

Thema: [php] reguläre audrücke vom 07.02.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php] reguläre audrücke
Seite: Zurück  1, 2, 3, 4  Weiter
Autor Nachricht
karmacoder

Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht: Männlich
Verfasst Mi 08.02.2006 13:02
Titel

Antworten mit Zitat Zum Seitenanfang

XSchinkenX hat geschrieben:
sollte funzen:

$pattern = "#<nurso(.*?)>#"; => $replace = "<nurso>";

ned lieber so?

$pattern = "#<nurso[^>]*>#"; => $replace = "<nurso>";
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mi 08.02.2006 13:33
Titel

Antworten mit Zitat Zum Seitenanfang

sollte eigentlich mit dem ? schon ungierig genug sein... klappt auch, habs grad mal getestet.
 
Anzeige
Anzeige
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 08.02.2006 14:33
Titel

Antworten mit Zitat Zum Seitenanfang

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
*zwinker*
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mi 08.02.2006 14:37
Titel

Antworten mit Zitat Zum Seitenanfang

caZpa hat geschrieben:
ich weiß echt nicht wie ich das anstellen soll....


Dafür gibts http://de.php.net/preg_replace
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
caZpa
Account gelöscht Threadersteller


Ort: -

Verfasst Mi 08.02.2006 14:42
Titel

Antworten mit Zitat Zum Seitenanfang

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

Antworten mit Zitat Zum Seitenanfang

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

Antworten mit Zitat Zum Seitenanfang

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

Antworten mit Zitat Zum Seitenanfang

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
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3, 4  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.