计算字符串中特定字符的数量

时间:2013-04-23 06:47:31

标签: php string

对不起,由于我的问题,我刚发现了一个新问题: Get The Number of Sepecific String Inside String

我一直在努力,如何找到字符串中特定字符的数量?这种情况就是这样。

function get_num_chars($char) {
    $string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1'
}

如果我通过get_num_chars(M) would return 2 如果我通过get_num_chars(M-1) would return 1

我尝试了count_chars()substr_count()但它不起作用。

6 个答案:

答案 0 :(得分:11)

可以使用substr_count()

我认为你没有正确地传递它的价值

$string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1';

echo substr_count($string, 'K-1');//echo's 1

echo substr_count($string, 'K');// echo's 2

答案 1 :(得分:5)

使用正则表达式的可能解决方案:

function get_num_chars($char) {
    $string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1';
    return preg_match_all('/'.$char.'(?=,|$)/', $string, $m);
}

echo get_num_chars('M');    // 2
echo get_num_chars('M-1');  // 1
echo get_num_chars('M-2');  // 1
echo get_num_chars('K');    // 1
echo get_num_chars('K-1');  // 1

答案 2 :(得分:1)

试试这个,它可能不可行,但解决你的问题

function get_num_chars($char) {

    $string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1';
    echo substr_count($string, $char);
}
get_num_chars('M,');
get_num_chars('M-1');
get_num_chars('k,');

答案 3 :(得分:1)

$k_count = substr_count($string, 'K') - substr_count($string, 'K-');
$k1_count = substr_count($string, 'K-1');

Counting K not followed by dash如下:

$k_count = preg_match_all('/*K(?!-)/*', $string, $out);

答案 4 :(得分:1)

试试这个

 $string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1';

 $wordCounts = array_count_values(str_word_count($string,1));

 echo $mCount = (isset($wordCounts['M-'])) ? $wordCounts['M'] : 0;

但是这里有一件事你可以传递'M-'或'M'而不是'M-1'这是你需要的一些解决方法。 Beacuse str_word_count匹配使用的确切字数。

答案 5 :(得分:0)

检查一下,

$string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1';
$arrString = explode($string,'M');
echo $stringCount = count($arrString);