Интеллектуальный подсчет подстрок?

#php

Вопрос:

Хорошо, предположим, у меня есть строка следующего вида: $string = «0::15:6:0»;

Теперь я хочу посчитать количество чисел выше 0 в строке, поэтому я substr_count($string, ':') 1) получаю число 5 (что технически правильно, так как, хотя фактических чисел 4, пробел в моем коде используется как 0). Но это включает в себя 0 и пустые 0…чего я не хочу.

Есть какие-либо предложения о том, как создать «умный подсчет подстрок», чтобы отобразить мне число 2 (поскольку есть два числа, не пустые или 0, 15 и 6)?

Комментарии:

1. Вы могли бы попробовать использовать регулярное выражение для сопоставления чисел, превышающих 0. Может быть, что-то вроде /[1-9]d*/

2. 1. explode путем : 2. Выполните итерацию по массиву из #1 и сравните 3. ????????? 4. ПРИБЫЛЬ! (это точный алгоритм, который вы применяете, делая это вручную, не уверен, почему вы хотите что-то более сложное, когда разрабатываете)

3. Кроме того, я думаю, вы неправильно понимаете, что делает substr_count. На самом деле это подсчет количества раз, когда в строке появляется»:».

Ответ №1:

Потрясающе в крошечной упаковке:

 $count = count(array_filter(explode(":",$string)));
 

Это работает, потому что строка "0" является ложной.