2017-03-29 41 views
-2

我想知道是否有一組函數或直接函數可以計算字符串中出現多少個數字,而不使用長途作爲str_split並檢查循環中的每個字符。計算字符串中出現多少個數字

從喜歡的字符串:

fdsji2092mds1039m 

它返回一個有8號內。

+1

請舉例提你的輸入和預期的輸出。 –

+2

是的,有;你有沒有找過並嘗試過可能導致失敗的事情? –

+0

使用PHP strlen。 – Akintunde007

回答

2

您可以使用filter_var()FILTER_SANITIZE_NUMBER_INT常量,然後檢查新字符串的長度。新字符串將只包含該字符串中的數字,並將所有其他字符過濾掉。

$string = "j3987snmj3j"; 
$numbers = filter_var($string , FILTER_SANITIZE_NUMBER_INT); 
$length = strlen($numbers); // 5 
echo "There are ".$length." numbers in that string"; 

注意,每個號碼可獲單獨計數,所以137將返回3,正如1m3j7

Live demo

+0

'刪除除數字,加號和減號外的所有字符.'。結果是錯誤的,例如''fdsji2092mds1039m ++'' – smarber

+0

因爲@smarber說這是不正確的解決方案 –

1

其他解決方案:

function countNumbers(string $string) { 
    return preg_match_all('/\d/', $string, $m); 
} 

您可以使用正則表達式

0

嘗試這樣的:

$myString = 'Som3 Charak1ers ar3 N0mberZ h3re ;)'; 
$countNumbers = strlen((string)filter_var($myString, FILTER_SANITIZE_NUMBER_INT)); 
echo 'Your input haz ' . $countNumbers . ' digits in it, man'; 

你也可以做一個函數出這個返回只有數字,如果你需要它。

0

下面的代碼做你想要做什麼:

<?php 
$string = 'dsfds98fsdfsdf8sdf908f9dsf809fsd809f8s15d0d'; 
$splits=str_split($string); 
$count=0; 
foreach ($splits as $split){ 
    if(is_numeric($split)){ 
     $count++; 
    } 
} 

print_r($count); 

輸出:17

相關問題