Преброяване на дължина

dakata__92

Super Moderator
Колеги, нужно ми е някакво решение на едно проблемче. Трябва да преброя дължината на цифра която е кажи речи винаги 10 цифрено число. Обикновенно бих ползвал strlen но той дава неверни резултати при някой въведени стойности, като например:
PHP:
$a= 0151122209;
echo strlen($a)." ".mb_strlen($a);
Ще изведе 7 като стойност което е тегаво. Пробвах да добавя (string) и прочие но променливата $a идва кято параметър на функция
PHP:
function s($a){
if(strlen($a) == 1){
 return true;
}
else{
return false
}
}
Принципно мога с preg_match или примерно да викам нещата така:
s('0151122209'); но поради естеството на кода се налага ето така да се подават нещата s(0151122209); . Дайте идея как да преброя дали са въведени 10 цифри ?
 
strlen извежда броя на байтовете в низ, не броя на буквите за това и имаш този проблем.

Или preg_match както ти самия каза или ги подаваш като низове.
 
eLite каза:
strlen извежда броя на байтовете в низ, не броя на буквите за това и имаш този проблем.

Или preg_match както ти самия каза или ги подаваш като низове.
Само тези ли варянти имам?
 
Истината е, че ако сложиш нула отпред, числото се счита за такова от осмична бройна система. Всъщност 0151122209[8] = 3445904[10], което си е 7-цифрено.

Можеш ли да поясниш защо точно трябва да имаш водеща нула и да не е стринг? PHP не е строго типизиран - възползвай се. Освен ако нямаш причина – поясни :)

Иначе strlen си дава правилен резултат, ако числото е в десетична бройна система.
 

Back
Горе