Migration von ereg_replace preg_replace

stimmen
1

Migration nur von PHP 5,2-5,3, viel harter Arbeit! Ist die folgende ok, oder würden Sie etwas anders machen?

$cleanstring = ereg_replace([^A-Za-z0-9]^[,]^[.]^[_]^[:], , $critvalue);

zu

$cleanstring = preg_replace([^A-Za-z0-9]^[,]^[.]^[_]^[:], , $critvalue);

Vielen dank an alle

Veröffentlicht am 29/12/2009 um 23:32
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
2

Ich bin nicht so vertraut mit der ereg_ * Funktionen aber Ihre Preg-Version hat ein paar Probleme:

  1. ^ Bedeutet Beginn der Zeichenfolge so mit ihm in der Mitte nicht alles akzeptiert wird; und
  2. Sie müssen Ihren regulären Ausdruck begrenzen;

Ein Beispiel:

$out = preg_replace('![^0-9a-zA-Z]+!', '', $in);

Hinweis Ich verwende! die Regex zu begrenzen, aber sie konnte es einfach verwenden, wie leicht /, ~ oder was auch immer. Die oben entfernt alles außer Zahlen und Buchstaben.

Siehe Muster Syntax , speziell Trennsymbole .

Beantwortet am 29/12/2009 um 23:36
quelle vom benutzer

stimmen
3

Als Follow-up zu cletus Antwort:

Ich bin nicht mit der POSIX-regex Syntax (ereg_ *) entweder vertraut, sondern auf der Grundlage Ihrer Kriterien folgendes tun, was Sie wollen:

$cleanstring = preg_replace('#[^a-zA-Z0-9,._:]#', '', $critvalue);

Dies entfernt alles außer az, AZ, 0-9, und die puncation Zeichen.

Beantwortet am 30/12/2009 um 00:02
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more