Regulärer Ausdruck für Sonderzeichen
Eric
- php
Hallo,
ich habe ein Problem bei der erstellung eines regulären Ausdruckes. Diese soll nur Strings erkennen, die vollständig aus Sonderzeichen gehören.
Gültig wäre hier z.B.:
!"§$%&
.-;&(
...
Jedoch wenn andere Zeichen wie Buchstaben oder Zahlen enthalten sind soll ein Fehler generiert werden.
Ungültig:
dw42-32
gd-er
test
Ich kann natürlich so was angeben wie:
$regex ='[!"§$%&/()=?]';
$regex = '[^a-zA-Z0-9]';
Jedoch schließt das die Kombinationsmöglichkeiten nicht aus. Hat hier jemand eine Idee oder schon mal ein ähnliches Problem gehabt?
Gruß und Danke!
@@Eric:
nuqneH
$regex = '[^a-zA-Z0-9]';
Von diesen Zeichen willst du beliebig viele (min. 1): [^a-zA-Z0-9]+
Qapla'
Hello Gunnar,
$regex = '[^a-zA-Z0-9]';
Von diesen Zeichen willst du beliebig viele (min. 1): [^a-zA-Z0-9]+
Bei dieser Gelegenheit, falls Du nochmal guckst hier:
Welchen Umfang hat der von den PHP-PCRE abgedeckte Zeichenraum überhaupt?
Welcher Zeichensatz wird zugrunde gelegt?
Kann ich auf die Codes/Codespoints oberhalb 127d noch zugreifen und wie mache ich das sicher?
Das PHP-Manual ist da nicht so auskunftsfreudig, bzw. habe ich die passende Stelle bisher nicht gefunden.
Dass es inzwischen auch eine mb_ereg_match() http://de3.php.net/manual/en/function.mb-ereg-match.php gibt, habe ich gesehen.
Ich fand die Idee ganz reizvoll, Scripte automatisch von ISO-8859-x auf utf-8 umschreiben zu lassen und bastele da ein bisschen an einer Lösung. Dabei kamen die obigen Fragen wieder hoch.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
(H[ea]llo|Hi(ho)|Nabend) Tom,
Welchen Umfang hat der von den PHP-PCRE abgedeckte Zeichenraum überhaupt?
Welcher Zeichensatz wird zugrunde gelegt?
ASCII und UTF-8 (BMP).
Kann ich auf die Codes/Codespoints oberhalb 127d noch zugreifen und wie mache ich das sicher?
Für < 255 mit \xhh (auch im UTF-8-Modus)
Für >255 im UTF-8-Modus mit
\x{hhh}
Es gibt aber auch brauchbare Unicode-Zeichenklassen.
Das PHP-Manual ist da nicht so auskunftsfreudig, bzw. habe ich die passende Stelle bisher nicht gefunden.
So wie's ausschaut, wird der entsprechende Bereich wieder einmal umgestaltet. Vielleicht kommen ja noch brauchbare Informationen über die Unicode-Spezialitäten hinzu.
Dass es inzwischen auch eine mb_ereg_match() http://de3.php.net/manual/en/function.mb-ereg-match.php gibt, habe ich gesehen.
Aktuelle mbstring-Erweiterungen sollten auch PCRE-Ausdrücke (also wie die preg_...-Funktionen) verstehen.
Man muss nur mb_regex_set_options() mit einem kleinen 'z' füttern.
MffG
EisFuX
Hello,
Welcher Zeichensatz wird zugrunde gelegt?
ASCII und UTF-8 (BMP).
ASCII ist nachvollziehbar.
Aber welche Glyphen sind dann dann mit den Codepoints über 127 referenziert?
So wie's ausschaut, wird der entsprechende Bereich wieder einmal umgestaltet. Vielleicht kommen ja noch brauchbare Informationen über die Unicode-Spezialitäten hinzu.
Das habe ich schon gesehen. Der Bereich wird brauchbar...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
$regex = '[^a-zA-Z0-9]';
Von diesen Zeichen willst du beliebig viele (min. 1): [^a-zA-Z0-9]+
Aber nicht so.
Denn das matcht auch den String a#a ;-)
Man muß das noch an String-Anfang und -Ende verankern.
cu,
Andreas
@@MudGuard:
nuqneH
Man muß das noch an String-Anfang und -Ende verankern.
Oops, wie recht du hast.
@Eric: Anfang und Ende findest du in http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=SELFHTML.
Qapla'