Ich suche nach einer PHP-Funktion, die eine Eingabezeichenfolge verwendet und eine bereinigte Version davon zurückgibt, indem alle Sonderzeichen entfernt werden, wobei nur alphanumerische Zeichen übrig bleiben.
Ich benötige eine zweite Funktion, die dasselbe tut, aber nur alphabetische Zeichen AZ zurückgibt.
Jede Hilfe sehr geschätzt.
unichars '\p{Latin}' '\p{Alphabetic}' '[^A-Za-z]' | wc -l
== 1192 Codepunkte, die lateinisch alphabetisch sind, aber nicht AZ. Es ist allgemein bekannt, dass ASCII für Englisch ausreicht. Es ist nicht so, und deshalb hat das Schreiben von AZ einen Code-Geruch .Antworten:
Warnung: Beachten Sie, dass Englisch nicht nur auf AZ beschränkt ist.
Versuchen Sie dies , um alles außer az, AZ und 0-9 zu entfernen:
Wenn Ihre Definition von alphanumerisch Buchstaben in Fremdsprachen und veraltete Skripte enthält, müssen Sie die Unicode-Zeichenklassen verwenden.
Versuchen Sie dies , um nur AZ zu verlassen:
Der Grund für die Warnung ist, dass Wörter wie Lebenslauf den Buchstaben enthalten, mit dem
é
dieser nicht übereinstimmt. Wenn Sie einer bestimmten Buchstabenliste entsprechen möchten, passen Sie den regulären Ausdruck so an, dass er diese Buchstaben enthält. Wenn Sie mit allen Buchstaben übereinstimmen möchten, verwenden Sie die entsprechenden Zeichenklassen, wie in den Kommentaren angegeben.quelle
[\p{Alphabetic}\p{Numeric}]
. Ich habe die alphabetische Eigenschaft PCRE vergessen, aber Sie können sie mit approximieren[\pL\pM\pN]
.[A-Z]
immer falsch ist .i
aber ich muss mich immer nur um eine englische Bevölkerungsgruppe kümmern .. Ich vergesse, dass viele Leute über andere Sprachen nachdenken müssen. Übrigens habe ich gerade bemerkt, dass Sie der Benutzer mit den höchsten Wiederholungszahlen sind, der noch nie eine Frage gestellt hat. Sogar Jon Skeet hat schon früher Fragen gestellt!Stattdessen
preg_replace
könnten Sie immer die Filterfunktionen von PHP verwenden, indem Sie diefilter_var()
Funktion mit verwendenFILTER_SANITIZE_STRING
.quelle
FILTER_SANITIZE_STRING
? Meines Wissens ist das Beste, was auf diese Weise erreicht werden kann, aber es bleibenFILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH
nicht nur Buchstaben und Zahlen, sondern auch Punkte, Schrägstriche, Prozente und so weiter.quelle