8

对不起,由于我的问题,我刚刚发现了一个新问题: 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()但它不起作用。

4

5 回答 5

12

可以使用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
于 2013-04-23T06:50:57.047 回答
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
于 2013-04-23T07:14:04.230 回答
0

尝试这个。这可能不可行,但它解决了您的问题。

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,');
于 2013-04-23T06:57:59.473 回答
0
$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);
于 2013-04-23T07:01:46.013 回答
-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”。这是您想要的一些解决方法。因为 str_word_count 匹配正在使用的确切字数。

于 2013-04-23T07:08:12.977 回答