 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
10.12.2002, 20:24
|
#1
|
|
TP-Veteran
Registriert seit: Jan 2002
|
REGEXP (mal wieder...)
Nabend!
Verrät mir jemand, wie ich mit der REGEXP-Funktion von MySQL nach folgendem Muster suchen kann:
PHP-Code:
"name";typ:länge:"inhalt";
wobei 'name', 'typ', 'länge' und 'inhalt' variabel sind und alle übrigen Zeichen genau so an den Stellen enthalten sein müssen, wie etwa das hier:
PHP-Code:
"activator_key";s:16:"dd644fd7e530d079";
Das ist das Muster, in dem die PHP-Funtkion serialize() Arrays bzw. ihre Elemente serialisiert. Wer den Thread 'Objektorientiertes Speichern' gelesen hat, weiß, was ich damit will ;).
Achja, mein bisheriger Versuch, der nicht funktioniert:
PHP-Code:
'"' . $name . '";[a-z]:([0-9])*:".' . $inhalt . '.";'
|
|
|
10.12.2002, 21:02
|
#2
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Vertausch mal ) und *, also:
'"' . $name . '";[a-z]:( [0-9]*):".' . $inhalt . '.";'
|
|
|
10.12.2002, 21:07
|
#3
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Klappt leider auch nicht 
|
|
|
10.12.2002, 21:18
|
#4
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Wenn ich wüsste, wie mySQL mit regexp's umgeht...
Die zu durchsuchenden Werte sehen so aus wie den Beispiel? Dann sollte es eigentlich passen
Maskier mal die Semikoli mit einem Backslash:
'"' . $name . '"\;[a-z]:([0-9])*:".' . $inhalt . '."\;'
|
|
|
10.12.2002, 21:35
|
#5
|
|
TP-Veteran
Registriert seit: Jan 2002
|
PHP-Code:
'.[\'\"' . $name . '\";\'][:alpha:]:[[:digit:]][\'\:\"' . $inhalt . '\"\'].';
Das funktioniert, aber noch 'zu gut'. Ich denke, ihm ist die Reihenfolge der Zeichen in $inhalt und $name egal. Falls das der Grund ist - wie krieg ichs hin, dass die als zusammenhängende Zeichenfolgen in der richtigen Buchstabenfolge gewertet werden? Einfassen und Anführungsstriche etc. bringt anscheinend nix.
|
|
|
10.12.2002, 22:21
|
#6
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Ich habs fast:
PHP-Code:
"content\";[[:alpha:]]:[[:digit:]]:\".*elefant.*\";
Das arbeitet fast wie gewollt, nur noch ein letztes Problem:
Dieses Muster wird nur dann gefunden, wenn im überprüften String hinten
steht - also exakt die Zeichenfolge zwischen den Anführungsstrichen. Wenn irgendwelche Zeichen davor oder danach stehen, reagiert es nicht.
Dieses .* (punkt-stern) ist aber laut MySQL-Doku der richtige Platzhalter für beliebig viele beliebige Zeichen, müsste also richtig sein. Wenn der Rest jetzt so gut klappt, warum dann das nicht? grmpf...
|
|
|
10.12.2002, 22:28
|
#7
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Im Moment suchst Du die beliebigen Zeichen innerhalb der Anführungszeichen, also "blablaElefantblabla". Ist das so OK?
|
|
|
10.12.2002, 22:31
|
#8
|
|
TP-Veteran
Registriert seit: Jan 2002
|
ja, exakt so solls sein. Ich glaub wirklich, dass das soweit korrekt ist, eben bis auf das beliebige-zeichen-davor-und-danach-problem. Aber das is hartnäckig...
er findet jetzt nur "elefant", aber nicht "im zoo gibt es elefanten" oder "fisch ente elefant tiger giraffe" - aber das soll auch gehn.
|
|
|
10.12.2002, 22:37
|
#9
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
moment...
...ich meine, ich hätte das Problem auch schon mal gehabt. Versuch doch mal:
"content\";[[:alpha:]]:[[:digit:]]:\".*elefant[^\"]*\";
Damit sucht er nicht alle beliebigen Zeichen, sondern alle bis zum " ... irgendsowas war's bei mir
|
|
|
10.12.2002, 23:02
|
#10
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Awww shit...hat sich erledigt
PHP-Code:
"content\";[[:alpha:]]:([[:digit:]])*:\".*elefant.*\";
Es lag nicht am Punkt-Stern, sondern am [[:digit:]] - so geschrieben gilt das ja als nur eine Ziffer, und ich hab nicht bedacht, dass an der Stelle auch eine mehrstellige Zahl stehen kann.
Meine Ein-Wort-Tests klappten durch Zufall, weil die Zahl dabei immer einstellig war (Länge des Strings in den Anführungsstrichen, das ganze ist ein per serialize() serialisiertes Array) - sobald der String länger als 9 Zeichen wurde, ist es an dieser Stelle hängengeblieben. Mann...
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:57 Uhr.
|
 |