Hi,
kann mir jemand sagen, wie ich innerhalb eines Regulären Ausdrucks ein Minuszeichen (-) escape?
genau wie jedes andere: mit dem Backslash.
ereg_replace ("^(.*)(/)([A-Z|a-z|0-9|-|_]+)(/)$", "\3", $VAR)
Warum definierst Du in Deiner Zeichenklasse das Pipe-Zeichen vier mal? "[A-Za-z0-9-_|]" würde vollkommen reichen.
Wobei das - nicht als Zeichen interpretiert wird, weil es als Sonderzeichen einen Bereich definiert, z.B. [A-Z].
Ja, in diesem Fall "alles von '|' bis '|'".
ereg_replace ("^(.*)(/)([A-Z|a-z|0-9|-|_]+)(/)$", "\3", $VAR)
Das Problem ist, dass der String erst noch einer anderen (internen) Funktion übergeben wird, wobei Backslashes innerhalb der Quotes aufgelöst werden - anders könntest Du z.B. hier kein Doublequote als Zeichen übergeben. Willst Du, dass ein Backslash am anderen Ende ankommt, musst Du diesen escapen.
Wie wird ein Minus in einem Regulären Ausdruck auch als ein solches interpretiert?
Ja; außer in einer Zeichenklasse; außer er steht dort ganz am Ende.
Cheatah