PHP / Zend: bir dize tüm karakterleri kaldırmak ve sadece sayıları tutmak için nasıl

2 Cevap php

Ben sadece sayıları tutmak ve bir değişken tüm karakterleri kaldırmak istiyorum.

Örneğin:

input: +012-(34).56.(ASD)+:"{}|78*9
output: 0123456789

2 Cevap

Zend_Filter_Digits ile

Basamaklı karakterler ancak tüm kaldırarak string $ değerini döndürür.

Zend_Filter aracılığıyla statik çağrı ile Örnek:

echo Zend_Filter::filterStatic('abc-123-def-456', 'Digits'); // 123456

Rakamlar örneği ile Örnek

$digits = new Zend_Filter_Digits;
echo $digits->filter('abc-123-def-456'); // 123456;

Dahili olarak, filtre preg_replace giriş dizesi işlemek için kullanır. Regex Motor UTF8'den ile derlenmiş ve Unicode etkinse bağlı olarak, bu kalıpları biri kullanılabilir olacaktır:

  • [^0-9] - Unicode devre dışı ise Filter
  • [^[:digit:]] - Mbstring ile değeri için filtre
  • [\p{^N}] - Mbstring olmadan değeri için filtre

Bkz http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Filter/Digits.php

Bu genel olarak bunu nasıl:

$numbers = preg_replace('/[^0-9]+/', '', '+012-(34).56.(ASD)+:"{}|78*9');
echo $numbers;

Output:

0123456789