 |
| 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 |
12.03.2005, 22:53
|
#1
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Reg Expression
Wer spricht fliessend regex ?
brauche folgene Ersetzung:
alle @ nach \@
alle $ nach \$
alle " nach \"
ich möchte das gerne als einen Ausdruck statt in 3 Zeilen, kann leider nicht fliessend regex 
|
|
|
12.03.2005, 23:35
|
#2
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Hi !
müsste irgendwie so gehen:
PHP-Code:
$s = preg_replace("/([@$\"])/", '\$1', $s);
// oder
$s = preg_replace("/([@$\"])/", '\$0', $s); # bin mir mit dem $1 oder $0 nicht so ganz sicher...
// oder
$s = str_replace(array('@','$','"'), array('\@', '\$', '\"'), $s);
Gruss
Jan
|
|
|
12.03.2005, 23:42
|
#3
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
nur Deine dritte Lösung geht 
würd mich trotzdem für die richtige regex interessieren, wills doch ein bisserl besser verstehen, wenn ich es schon nicht hinkrieg
auch schon weil ich das dann auch in perl benutzen kann.
|
|
|
12.03.2005, 23:55
|
#4
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
wozu regexp?
$newstring = strtr($oldstring, array('@' => '\@', '$' => '\$', '"' => '\"'));
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
|
|
|
12.03.2005, 23:55
|
#5
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
dann mal so?
PHP-Code:
$s = preg_replace("/([@$\"])/", '\\\$1', $s);
// oder
$s = preg_replace("/([@$\"])/", "\\\\\\1", $s);
?
|
|
|
12.03.2005, 23:58
|
#6
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
oder strtr  ...richtig... wie immer führen hier auch zig Wege zum Ziel.  Wobei ich hier auch nicht zu regex rate - die anderen Stringfunktionen sind bei soetwas meist fixer.
|
|
|
13.03.2005, 00:01
|
#7
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Hey StuckMojo  beide Ausdrücke gehen ! Danke 
könntest Du mir einen Satz dazu sagen ?
@HoRnomiatoR sagt ich doch : 1. wegen perl und 2. wegen Verständnis (oder umghekehrt  )
aber trotzdem danke für die andere Lösung mit strtr - ist auch noch nicht in meinem alltäglichen repertoire 
Geändert von steffenk (13.03.2005 um 00:04 Uhr).
|
|
|
13.03.2005, 00:16
|
#8
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ich versuchs mal ...
"/([@$\"])/", '\\\$1'
/ begin
( suche nach
[] Begrenzung der Zeichen
\\\$1 - ok, zeichen wird mit \ maskiert, aber warum \\\ ?
\\ ist klar, der maskierte Backslash, aber warum muss die var $1 auch maskiert werden ?
|
|
|
13.03.2005, 00:27
|
#9
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
/ - zu Beginn und zum Ende... kann auch irgendwas anderes sein
(...) - um das ergenis/die treffer in $1 oder \\1 zu erhalten
[@$\"] - steht genau für ein Zeichen, dass entweder @ oder $ oder " sein kann (eine Zeichenklasse).
Mit dem maskieren musste ich eben auch rumprobieren: Dabei scheint es wie folgt abzulaufen:
- als erstes interpretiert PHP den ganzen Kram. Daher der erste Slash maskiert.
- zusätzlich muss das $ maskiert werden, was anschein aber erst in der Regex-Maschine nötig zu sein scheint - zumindest in php. (Benutzt man double-quotes muss ein weiterer Slash maskiert werden.)
So scheint es mir zumindest zu sein.
Gruss
Jan
PS: http://www.traum-projekt.com/forum/s...ad.php?t=27341
|
|
|
13.03.2005, 00:38
|
#10
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
danke Jan, habs zwar noch nicht ganz gecheckt, aber der Ansatz ist da.
Das in php $ maskiert werden muss, ist mir neu - in perl ist das so.
mit doublequotes kan ich auch nachvollziehen.
Bedient sich php bei regex einer anderen engine ?
|
|
|
13.03.2005, 00:41
|
#11
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
http://de.php.net/manual/de/ref.pcre.php ...Perl-Kompatibel. Zu den Funktionen ereg und eregi gibt es somit Unterschiede.
Gruss
Jan
|
|
|
13.03.2005, 01:00
|
#12
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ah ok danke, i got it 
den workshop von webmichl hatte ich auch noch nicht entdeckt - war noch vor meiner Zeit hier 
... irgendwie bekomme ich immer hirnknoten bei regex, das muss besser werden ! 
|
|
|
|
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 01:14 Uhr.
|
 |