Nasıl özel karakterleri kaldırmak için PHP bir regex yazabilirim?

4 Cevap php

Ben PHP için oldukça yeni, ve ben normal ifadeler taşıma birçok farklı yolu vardır fark ettim.

Bu şu anda kullanıyorum budur:

$replace = array(" ",".",",","'","@");
$newString = str_replace($replace,"_",$join);

$join = "the original string i'm parsing through";

Ben az, AZ, 0-9 ya da değil, her şeyi kaldırmak istiyoruz. Ben yukarıda bir ters fonksiyonu arıyorum. Olurdu yazmak için bir pseudocode yolu

If characters in $join are not equal to a-z,A-Z,0-9 then change characters in $join to "_"

4 Cevap

$newString = preg_replace('/[^a-z0-9]/i', '_', $join);

Bu hile yapmak gerekir.

Sana cevap vermiyorum ama bu öğretici onun 10 dakika değer.

Link to Regular Expressions in PHP

Az, AZ, 0-9 olmayan bir şey için düzenli ifadedir:

preg_replace('/[^a-zA-Z0-9]/', "_", $join);

Bu, {[(0)] olarak da bilinir}

En kolay yolu şudur:

preg_replace('/\W/', '_', $join);

\ W sözcük olmayan bir karakter grubudur. Bir sözcük karakteri a-z, A-Z, 0-9, ve . \W matches everything not previously mentioned olduğunu.

Edit: gebelik perlman perlre belgesinde Perl düzenli ifadeler kullanır.

* Düzenleme 2: Bu bir C veya İngilizce yerel ayarlardan birini varsayar. Diğer yerel bir sözcük karakteri sınıfında harfler aksanlı olabilir. Unicode yerel ayarlar tek karakter için kod noktasının 128 aşağıdaki karakterleri dikkate alacaktır.