Извините, я только что нашел новую проблему из-за моего вопроса: Получить число 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()
но он не работает.
Возможное решение с использованием регулярного выражения:
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
Это возможно с помощью 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
Попробуй это
$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 совпадает с точным количеством слов.
$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);
Попробуйте это, это может быть невыполнимо, но решает вашу проблему
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,');
Проверь это,
$string = '120201M, 121212M-1, 21121212M, 232323M-2, 32323K, 323232K-1'; $arrString = explode($string,'M'); echo $stringCount = count($arrString);