Intereting Posts
Как получить изображение пользователя с API-интерфейсом Twitter 1.1? Я хочу удалить письмо из всех элементов в массиве и заменить его на строку с помощью PHP. Автоматическая аутентификация Soundcloud PHP Api без взаимодействия с пользователем PHP Использование запросов cURL и GET в URL-адресе custom auth и хэширование laravel 5.1 Должен ли я обрезать расшифрованную строку после mcrypt_decrypt? «Вертикальное» соответствие регулярных выражений в ASCII «изображении» Мне нужен более эффективный способ проверки наличия нескольких параметров $ _POST isset GET Request работает с библиотекой запросов python, но не работает с curl Проверьте, когда была обновлена ​​база данных / таблицы SQLite (PHP) Иностранные языки POSTGRES Теги друзья фото Неустранимая ошибка: вызов частного объекта MyObject :: __ () из недопустимого контекста Допустимый размер памяти 33554432 байт исчерпан (пытался выделить 12 байт) Элемент массива доступа, индексированный с помощью числовой строки

Дополнительные группы Regex?

Кажется, я запутался в регулярном выражении preg_match, которое я делаю, поэтому будут внимательны свежие глаза и помощь.

Мое текущее регулярное выражение выглядит следующим образом:

/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se 

Я хочу сделать ввод количества и двоеточие, например: (1,4) необязательно, поэтому он будет соответствовать:

 <!--menu:start--><!--menu:end--> 

или

 <!--menu:start:(0,3)--><!--menu:end--> 

Заключитесь с неподходящей группой и установите ее как необязательную: (?:...)?

 /<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se 

Как это:

 /<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se 

Я добавил группу, не связанную с захватом (?: ) , Вокруг части, которую вы хотите быть необязательной, и затем суффикс с вопросительным знаком: (?:<optional content>)?

Это использует необязательную группу, не связанную с захватом – (?: )? – для соответствия вашей необязательной части, а также \d вместо [0-9] для соответствия цифрам:

 /<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se 

Если числа в круглых скобках могут содержать более одной цифры, используйте вместо этого:

 /<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se