PHP - Есть ли способ рассчитать регулярные выражения (регулярные выражения), предназначенные для ваших нужд?

1

Я пытаюсь написать регулярное выражение для поиска тегов изображений внутри строки, а затем подсчитать их с помощью "count" или "substr_count",

EG: [image1], [image2] и т.д. И т.д.

Я абсолютный новичок с регулярным выражением, так что это довольно запутанно для меня. Прежде чем кто-нибудь спросит, да, я немного поработал над этим, но мне было просто любопытно, есть ли какие-либо ярлыки, которые есть там, что я и кто-то еще читающий это может пропустить.

Я также нашел https://regex101.com/, однако не знаю, куда идти оттуда.

Мои усилия для приведенного выше примера:

'~(\[image([\d])+\]~i'

а также..

'#[^a-z0-9.]#i'

Если кто-то может показать мне, как искать выше, или указать мне в правильном направлении на программирование золотого рудника, это было бы более чем оценено.

Приветствия, богатые

  • 0
    preg_match_all возвращает количество вхождений, см. руководство по php: php.net/manual/en/function.preg-match-all.php
  • 0
    Я попробую это, спасибо. Сможете ли вы подтвердить правильность моих регулярных выражений?
Показать ещё 5 комментариев
Теги:

2 ответа

1
Лучший ответ

Используйте preg_match_all, то есть:

$string = <<< LOL
some text with image1 and another
part of that contains image2
yet another image3
LOL;

preg_match_all('/(image\d+)/i', $string, $matches, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($matches[1]); $i++) {
    echo $matches[1][$i]."\n";
}

ВЫВОД:

image1
image2
image3

DEMO:

http://ideone.com/cQymaV

  • 0
    Хотите прокомментировать голосование?
  • 0
    Как мне использовать эту технику для подсчета общего количества тегов [image + number]?
Показать ещё 3 комментария
0

Функция preg_match_all уже возвращает количество вхождений, вам не нужно использовать счет или что-то еще:

if (false !== $count = preg_match_all('~\[image\d+]~i', $text))
    echo $count;

Ещё вопросы

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