echo $begrüßung;
funktioniert meine 'regular expression' nicht mehr.
preg_match('/[1]+$/', $fieldValue)Worauf soll denn dieser Reguläre Ausdruck passen?
Speziell gefragt: Was machen die vielen \ darin, und was bezweckst du mit dem - vor dem \ß?damit geben ich an, welche Charakter erlaubt sind... (eigentlich):
alle buchstaben a-z, A-z
umlauteß
wird das anders gemacht?
Siehe Kapitel Pattern Syntax. Backslashes nehmen nicht-alphanumerischen Zeichen eine eventuell vorhandene Sonderbedeutung. \* steht einfach nur für ein *, während * für eine Wiederholung des vorangegangenen Zeichens bzw. Ausdrucks steht. Bei alphanumerischen Zeichen ist es andersrum, einige bekommen durch vorangehende Backslashes eine Sonderbedeutung. A ist einfach nur ein A, aber \A steht für den Beginn des Objekts (so ähnlich wie ^)
Innerhalb der Zeichenklasse wirkt dein \A nicht als Anfangskennzeichen sondern als einfaches A, somit ist der \ hier zwar nicht kontraproduktiv aber trotzdem überflüssig. Vor den restlichen Zeichen ist er auch überflüssig. Ausnahme wäre der Bindestrich -, welcher für eine Bereichsangabe steht und durch einen \ entschärft werden muss. Alternativ kann man den Bindestrich auch an den Anfang oder das Ende der Zeichenklasse setzen, da verliert er ebenfalls seine Bedeutung als Bereichsangabe.
Allgemein kann PHP noch nicht sehr gut mit UTF-8 umgehen. Die preg-Funktionen können diese Kodierung aber berücksichtigen, wenn man den Modifizierer u verwendet. Gibst du diesen Modifizierer nicht an, werden die Bytes der UTF-8-Zeichen einzeln gewertet. Dein Ausdruck passt damit auch für $fieldValue = "\xbc"; (was unter ISO 8859-1 für ¼ steht) und im UTF-8-kodierten ü vorkommt.
echo "$verabschiedung $name";
a-z\A-Z\ä\Ä\ö\Ö\ü\Ü-\ß ↩︎