Regular Expression für PHP gesucht
Wedgy
- php
Hallo!
Wie kann ich mit Regex einen Buchstaben identifizieren - einschließlich Sonderzeichen? . erkennt auch Zahlen, [A-Za-z] erkennt nur das lateinische Alphabet. Ich möchte aber alle Buchstaben, also auch Umlaute und ß sowie sämtliche Buchstaben mit Akzenten oder Zirkumflex erkennen - aber keine Zahlen und Interpunktion. (Französisch zB)
Jemand eine Idee, wie das geht?
Danke!
Moin,
würde jetzt spontan erstmal die gewünschten Sonderzeichen in die eckigen Klammern mit reinschreiben, oder umgekehrt arbeiten, d.h. von . ausgehen und dann alle anderen z.B. [0-9] ausschließen. Ein ^ in [] wirkt als Negierung.
Viel Erfolg!
Chris
Hello,
Ich würde mir hier eine Konstante bauen, die alle meine gewünschten Zeichen _positiv_ enthält.
Die kann ich dann immer in die RegExp einsetzen.
Das wirft bei mir aber eine Frage auf, die zu dieser Uhrzeit an die Grenze meines Verstandes geht.
Angenommen, ich programmiere das Script im Zeichensatz "ANSI" und möchte nun aber, dass die Regular Expression Funktionen UTF-8 berücksichtigen:
Wie kann ich überhaupt Projekte, die bereits in UTF-8 erstellt wurden, wieder in "ANSI" zurücküberführen, ohne dass etwas verlorengeht?
UTF-8 erscheint mir immer wieder als die Stufe der Verwirrung, die die "normalen Erdlinge" vom weiteren Geschehen ausschließen wird ...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
echo $begrüßung;
Angenommen, ich programmiere das Script im Zeichensatz "ANSI" und möchte nun aber, dass die Regular Expression Funktionen UTF-8 berücksichtigen:
ANSI ist kein eindeutiger Begriff, um eine konkrete Kodierung zu benennen. Ich nehme an, du meinst (7-bitiges) ASCII oder ISO-8859-1.
- wie sage ich denen das?
Mit dem Modifizierer u (kleines u)
- wie bekomme ich die in meinen Code hinein?
Kommt auf deine Aufgabenstellung an. Hauptsache du hast irgendwoher einen String in UTF-8-Kodierung.
Wie kann ich überhaupt Projekte, die bereits in UTF-8 erstellt wurden, wieder in "ANSI" zurücküberführen, ohne dass etwas verlorengeht?
Meinst du jetzt den Quelltext? Da wirst du sicher nicht allzuviele Zeichenketten mit Nicht-ISO-8859-1-Zeichen drin haben. Für die hättest du ein Problem, weil sich diese mit ISO-8859-1 nicht darstellen lassen. Die kannst du dann wohl nur als NCR notieren.
Wenn du UTF-8-Daten auf einer ISO-8859-1-Seite darstellen willst, fällt mir ebenfalls nur
htmlentities($string, ENT_COMPAT, 'UTF-8')
ein.
echo "$verabschiedung $name";
Hello,
ANSI ist kein eindeutiger Begriff, um eine konkrete Kodierung zu benennen. Ich nehme an, du meinst (7-bitiges) ASCII oder ISO-8859-1.
Darum ahbe ich es auch in Anführungszeichen geschrieben.
Meinst du jetzt den Quelltext? Da wirst du sicher nicht allzuviele Zeichenketten mit Nicht-ISO-8859-1-Zeichen drin haben. Für die hättest du ein Problem, weil sich diese mit ISO-8859-1 nicht darstellen lassen. Die kannst du dann wohl nur als NCR notieren.
Wenn du UTF-8-Daten auf einer ISO-8859-1-Seite darstellen willst, fällt mir ebenfalls nur
htmlentities($string, ENT_COMPAT, 'UTF-8')
ein.
Danke.
Das ist bei einem Projekt ein echtes Problem geworden, weil einiger der Juppis neue Teile frisch fromm und frei in UTF-8 angelegt haben, während aber ca. 70% des Projektes schon in ISO-8859-1 ("ANSI") fertig waren und funktionieren.
Da hakt es nun leider an einigen Stellen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hi,
Hallo!
Wie kann ich mit Regex einen Buchstaben identifizieren - einschließlich Sonderzeichen? . erkennt auch Zahlen, [A-Za-z] erkennt nur das lateinische Alphabet. Ich möchte aber alle Buchstaben, also auch Umlaute und ß sowie sämtliche Buchstaben mit Akzenten oder Zirkumflex erkennen - aber keine Zahlen und Interpunktion. (Französisch zB)
Unterstützen die preg_*-Methoden die Unicode-Properties in regulären Ausdrücken?
In Perl kann man einen beliebigen Buchstaben mit dem Teilausdruck
\p{Letter}
matchen.
(statt Letter auch Lowercase_Letter, Uppercase_Letter, Titlecase_Letter, Other_Letter; oder zahlreiche andere Werte, die aber nichts mit Buchstaben zu tun haben).
Großes P anstelle des kleinen matcht ein Zeichen, das kein Buchstabe ist (bzw. ein Zeichen, das die gegebene Unicode-Property nicht hat).
Da das p in preg ja für perl-compatible steht, sollte das eigentlich auch dort funktionieren.
cu,
Andreas