Preg_replace için ereg_replace Göç

2 Cevap

Sadece 5.3 PHP 5.2 göç, zor iş çok! Aşağıdaki Tamam mı, yoksa farklı şeyler mi yapardınız?

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

karşı

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

Tüm teşekkürler

2 Cevap

Cletus'un cevabı için bir izlem gibi:

Ben şu istediğini yapmalıyım ya POSIX düzenli ifade sözdizimi (ereg_ *) ile aşina değilim, ama ölçütlere göre:

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

Bu az, AZ, 0-9, ve puncation karakterler dışında her şeyi kaldırır.

Ben ereg_ * fonksiyonları ile aşina değilim ama gebelik sürüm sorunları bir çift var:

  1. Ortada o şey maç olmayacak onunla çok ^ dizenin başlangıcı anlamına gelir; ve
  2. Eğer düzenli ifadeyi sınırlandırmak gerekir;

Örnek:

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

Ben kullanıyorum Not! regex sınırlandırmak için ama sizin gibi kolayca kullanabilirsiniz /, ~ ya da her neyse. Yukarıdaki sayılar ve harfler dışında her şeyi kaldırır.

Pattern Syntax gör, özellikle Delimiters.