$pattern = preg_replace('/{([a-z]+):([^\}]+)}/', '(?P<\1>\2)', 'post/{id:\d+}');
var_dump($pattern);
// Результат: post/(?P<id>\d+)
что значят эти <>?Это ограничители для имени индекса в массиве соответствий. Понятнее не стало? ) Просто такой синтаксис, его надо знать, если в планах использование регулярных выражений. А в браузере вы их не видели, потому что он всё, что в угловых скобках, воспринимает как html-теги. Чтобы увидеть - смотрите исходный код.
$pattern = preg_replace('/{([a-z]+):([^\}]+)}/', '(?P<\1>\2)', 'post/{id:\d+}');
var_dump($pattern);
// post/(?P<id>\d+)
первыйИЛИтретий
, то этого сделать не получится, потому что ИЛИ не является исключающим ИЛИ, что означает что оно работает как И. всё равно не пойму )Попробую объяснить иначе:
~первыйИЛИвторой~
, а вот в тексте будут найдены первый
и второй
. green red apple
шаблон ~green|red~
будет находить И green, И red. См. пример. x|y
Соответствует либо 'x' либо 'y'.
Например, /green|red/ соответствует 'green' в "green apple" И 'red' в "red apple."
8923456780
соответствует первому шаблону, но не соответствует второму. ~\.\K[^?]+~