Мне интересно определить, использовались ли именованные группы в шаблоне, передаваемом в preg_match ().
Представьте себе сценарий, в котором список шаблонов регулярных выражений повторяется и передается в preg_match ().Что-то вроде следующего:
$trg = "123abc/4";
$patterns = array('/abc/', '/abc\/(\d+)/', '/abc\/(?P<id>\d+)/');
foreach ($patterns as $p) {
preg_match($p, $trg, $matches);
if (len($matches) > 0) {
// Do something interesting with the capture
}
}
Если совпадение найдено, то в $ совпадений будет хотя бы один элемент.Два последних шаблона содержат перехват, но $ match будет массивом из двух элементов в первом случае и массивом из трех элементов в последнем.используемый.Мне нужно это знать, потому что я хочу передать захваченный текст другим функциям.
Как вы можете себе представить, шаблоны будут известны только во время выполнения, поэтому я не могу просто посмотреть на количество элементовв матче.
Любые идеи о том, как решить эту проблему?
Спасибо за ваше время.