подсчитать регулярное выражение с использованием substr_count

1

Как подсчитать все специальные символы в строке? пример:

$sample_string = "!!~~Sample string";
echo substr($sample_string, special character);

поэтому выход будет 4.

  • 0
    Возможно ли, что специальные символы распределяются случайным образом в строке? Не все последовательно в начале?
Теги:

4 ответа

0

Вы можете просто использовать функцию preg_replace_callback вместе с closure например, как

$sample_string = "!!~~Sample string";
$count = 0;
preg_replace_callback('/[^\h\w]/', function($m)use(&$count) {
    $count++;
}, $sample_string);
echo $count;//4

демонстрация

0

substr_count() не работает с регулярными выражениями, поэтому вам нужно будет выполнить substr_count() для каждого символа, который вы хотите удалить.

$str = preg_replace('/[^ a-z0-9]+/i', '', $sample_string);
$number_of_sprecial_chars = strlen($sample_string)-strlen($str);

капли всех специальных символов в строке, а затем дает вам разницу между оригинальной и измененной версией.

Если специальные символы появляются исключительно в начале (или вы хотите только те, которые нужно заменить),

echo preg_replace('/^[^ a-z0-9]+/', '', $sample_string);

даст вам непосредственно строку без специальных символов в начале (без использования substr()).

0

$ pattern = '/[! @# $% ^ & *()]/'//будет соответствовать одному вхождению любого символа внутри []

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

Выполните глобальное сопоставление регулярных выражений со строкой. Ищет предмет для всех совпадений с регулярным выражением, заданным в шаблоне, и помещает их в совпадения в порядке, указанном флажками.

После того, как будет найдено первое совпадение, последующие поиски продолжаются с конца последнего совпадения.

0

По Regex

$sample_string = "!!~~Sample string";

preg_match_all("/\W/",$sample_string,$match);

echo count($match);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню