Migrere fra ereg_replace til preg_replace

stemmer
1

Bare migrere fra PHP 5.2 til 5.3, mye hardt arbeid! Er følgende ok, eller ville du gjort noe annerledes?

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

til

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

Takk alle

Publisert på 29/12/2009 klokken 22:32
kilden bruker
På andre språk...                            


2 svar

stemmer
2

Jeg er ikke så kjent med ereg_ * funksjoner, men ditt preg versjonen har et par problemer:

  1. ^ Betyr begynnelsen av strengen så med det i midten det ikke vil matche noe; og
  2. Du må avgrense ditt regulære uttrykk;

Et eksempel:

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

Merk jeg bruker! å avgrense regex, men du kan like gjerne bruke /, ~ eller hva. Ovennevnte fjerner alt unntatt tall og bokstaver.

Se Mønster Syntax , spesielt skilletegn .

Svarte 29/12/2009 kl. 22:36
kilden bruker

stemmer
3

Som en oppfølging av Cletus svar:

Jeg er ikke kjent med POSIX regex syntaks (ereg_ *) heller, men basert på dine kriterier Følgende bør gjøre hva du vil:

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

Dette fjerner alt unntatt az, AZ, 0-9, og puncation tegn.

Svarte 29/12/2009 kl. 23:02
kilden bruker

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