Когда вы ищете конкретные шаблоны в некоторой целевой строке, один общий подход заключается в использовании функции preg_match_all () .Например:
$string = "You have to know [#4], [#2] and [#5] too";
$ids = [];
preg_match_all('/\\[#(\d+)[^]]*]/', $string, $ids);
print_r($ids[1]);
В этом случае используется шаблон /\[#\d+([^]]*)]/
;он соответствует всем последовательностям, которые начинаются с [#
, за которым следует по крайней мере одна цифра, за которой следует любое количество не ]
символов, а затем ]
.Поскольку используется группа захвата, искомые значения сохраняются в $ids[1]
.
Обратите внимание, что для строк без целевых последовательностей совпадений не будет, поэтому $ids[1]
будет пустым массивом.- который выглядит как то, что вы хотите.
Также обратите внимание, что если вы хотите только посчитать количество совпадений, вам даже не нужно указывать $ids
в качестве аргумента preg_match_all
- просто используйте еговозвращаемое значение:
$string = "You have to know [#4], [#2] and [#5] too";
var_dump( preg_match_all('/\\[#([^]]+)]/', $string) ); // int(3)