Soru sayıları bırakarak bir dizeden tüm karakterleri sıyırma


Hay, böyle bir dizim var:

v8gn5.8gnr4nggb58gng.g95h58g.n48fn49t.t8t8t57

Sadece sayıları (ve .s) bırakarak tüm karakterleri çıkarmak istiyorum

Bunun nasıl yapıldığına dağir fikri olan? Önceden yapılmış bir işlev var mı?

Teşekkürler


18
2018-01-22 14:48


Menşei




Cevaplar:


$str = preg_replace('/[^0-9.]+/', '', $str);

basamaklardan oluşmayan alt dizeleri değiştirin. hiçbir şey ile.


51
2018-01-22 14:52





preg_replace('/[^0-9.]/', '', $string);

6
2018-01-22 14:51



Noktadan kaçış. - Robin
Robin, gerek yok. Göndermeden önce test ettim ve tamam çalışıyor. - Ionuț G. Stan
@Robin, parantezin [] dışında olsaydı dönemden kaçmanız gerekirdi. köşeli parantez içinde dönem özel bir karakter olarak ele alınmaz - Jonathan Fingland
@Robin: [] içindeki metin bir dizi karakter tanımlar; '' için gerçekten anlam ifade etmiyor. Bu bağlamda herhangi bir karakter anlamına gelir. - Kevin Kibler


$input = 'some str1ng 234';
$newString = preg_replace("/[^0-9.]/", '', $input);

1
2018-01-22 14:53





Merakımı tatmin etmek için önerilen cevapların hızını sordum. preg_replace hız optimizasyonu / kullanmak (çok) daha hızlıdır str_replace() göre preg_replace().

Yani kullanmak isteyebilirsiniz str_replace() yerine.


0
2018-01-25 09:29



Ama gerçekten kullanamazsın str_replace() Bu durumda, sayı olmayan tüm karakterleri kodlamak istemediğiniz sürece. - Matteo Riva
Kemp, hm ... evet bu doğru. Bu çok fazla olurdu :) - Veger