Вы должны использовать preg_match
вместо preg_match_all
.preg_match_all
аналогично использованию JavaScript .match()
с регулярным выражением с модификатором g
, например
console.log('abc/foln'.match(/[^\/]*?\/?$/g));
Причина, по которой вы получаете пустое совпадение при возврате всех совпадений, заключается в том, что квантификаторы *
и ?
будут соответствовать пустым строкам, поэтому все регулярное выражение соответствует пустомустрока в конце строки.
Обычно нет смысла возвращать несколько совпадений, когда регулярное выражение привязано к ^
или $
, поскольку они могут совпадать только один раз (если вы не используете *Модификатор 1019 *, который сопоставляет начало / конец строк, а не всю строку).