ereg-Funktion
Martin
- php
0 Ulki0 Robin0 Sven Rautenberg0 Sascha Knappe0 Martin0 Sascha Knappe
Hallo Leute,
ich habe folgendes Problem:
Ich habe einen String $test und möchte in diesem nach den vier Zeichen ' " $ \ suchen.
Nun habe ich die ereg-Funktion:
if(ereg (" ",$test)) {}
Nun meine Frage:
Wie muß der Syntax zwischen den beiden Hochkommas aussehen, damit es klappt. Was mir Probleme bereitet, ist das Zeichen ".
Martin
Das Zeichen " ist in PHP einfach "
Wenn das dein Problem war dann ist es hiermit aus der Welt ;)
Nicht ganz:
Bei der Befehlszeile
if ereg("($\"'",$test)
bekomme ich eine Fehlermeldung. Was mir fehlt, ist der Syntax für die vier Zeichen " ' $ \ zwischen den Hochkommaten.
Martin
if ereg("($\"'",$test)
bekomme ich eine Fehlermeldung. Was mir fehlt, ist der Syntax für die vier Zeichen " ' $ \ zwischen den Hochkommaten.
Ja dieses Zeichen \ ist in PHP die Einleitung für diese ganzen Konstanten wie \n \t etc... Du solltest mal
if ereg("($\"'",$test)
probieren. Denn \ ist umgewandelt \
Gruß
Hanno
Funktioniert nicht, ich bekomme die Fehlermeldung:
Parse error: parse error, expecting `'('' in /homepages/29/d72282833/htdocs/xxx/xxx/xxx/xxx.php on line 25
und vertage das Problem auf Morgen.
Trotzdem Danke und gute Nacht
Martin
Ach scheisse ich dummkopf.
Ich glaube das $ ist auch wieder ein sonderzeichn.
Probier mal:
if ereg("($\"'",$test)
Das müsste doch jetzt gehen.
Gruß
Hanno
vielleicht solltest du einmal genauer beschreiben, was du mit "suchen" meinst - ob $ " etc. im String vorkommen oder nicht?
egal was du suchst, ich denke unter http://www.php.net/ereg wirst du eine lösung für dein problem finden!!
gruß
Robin
Moin!
Ich habe einen String $test und möchte in diesem nach den vier Zeichen ' " $ \ suchen.
Alle diese Zeichen sind potentiell Zeichen mit Sonderbedeutung. Solche Zeichen werden mit dem Backslash escaped, damit sie ihre Sonderbedeutung verlieren.
Je nachdem, was du nun wirklich genau suchst, sieht dein regulärer Ausdruck aus.
Außerdem: Verwende nicht ereg, sondern preg_match. Diese Funktion ist schneller und binärsicher und tut ansonsten das Gleiche - hat also nur Vorteile.
- Sven Rautenberg
Irgendwie schnalle ich das überhaupt nicht:
Ich will, wenn in dem String $pwd ein " vorkommt, dass die Anweisung ausgeführt wird. Schreibe ich es so:
if (preg_match (""", $pwd)) {Anweisung}
bekomme ich die Fehlermeldung
Warning: No ending delimiter '"' found in /homepages/29/d72282833/htdocs........
Und {Anweisung} wird ignoriert. Ich finde nicht, wo der Wurm drin ist.
Martin
tjaaa...
auf jedenfall müsste es auch mit
if(!(strpos($pwd, """) === false)) {
echo "enthält "!!!";
}
gehen...
Robin
Hallo Martin,
das sollte eigentlich sein, was du suchst, oder?
if(ereg ("['"$]",$test)) {}
Schönen Gruß aus München
die knappschaft
Nicht ganz,
mir ist der Syntax klar, nur habe ich ein Problem mit den Sonderzeichen, auch wenn ich ein Backshlash davor mache, bekomme ich ständig ein Parse error. Versuche einmal, die Zeile auszuführen, welche du gepostet hast.
Trotzdem Danke
Martin
Hallo Martin,
hatte etwas schnell geschossen....
aber dies ist getestet
if(!preg_match("[\'"$]",$test)) {
echo "das passt so";
}
Schönen Gruß aus München
die knappschaft
Hallo Sascha,
ich möchte dich ja nicht frustrieren, aber wenn du als $test z.B. ein a nimmst, kommt auch "dass passt so". Genauso wie bei den Zeichen " ' $ . Zumindest bei mir.
Grüße aus dem Zentrum des Schwobalands nach Bavaria
Martin
Okay, so klappt es:
if (preg_match("/["]|[']|[$]/",$pwd))
Danke an alle.
Martin
Moin!
Okay, so klappt es:
if (preg_match("/["]|[']|[$]/",$pwd))
Das sollte aber auch einfacher gehen.
Grund für deine Probleme war, dass die / vor und hinter dem regulären Ausdruck gefehlt haben. Irgendwelche Begrenzer für den regulären Ausdruck muß man in PHP aber noch _zusätzlich_ zum Stringbegrenzer angeben. Das ist üblicherweise das erste Zeichen im String, es muß kein / sein. Ausrufezeichen gehen z.B. auch. Es kann hilfreich sein, hier ein Zeichen zu wählen, was im regulären Ausdruck nicht oder am wenigsten auftritt, weil man dieses Zeichen ansonsten immer escapen muß.
Aber zurück zur Vereinfachung: Das, was du da produziert hast, geht genauso gut mit
preg_match("/["'$]/",$pwd)
[] umschließen Zeichenklassen. Eine Zeichenklasse steht für eines der dort enthaltenen Zeichen an der jeweiligen Stelle. Dein Konstrukt hat drei Zeichenklassen mit jeweils einem einzigen Zeichen definiert, und mit dem Oder-Operator | verknüpft. Kommt auf dasselbe heraus, ist aber nicht wirklich elegant.
- Sven Rautenberg
Danke...
... hast mir sehr weitergeholfen.
Die Metropole des Schwobalands grüßt Hamburg!
Martin