Я хочу иметь возможность разбирать пути к файлам, как этот:
/var/www/index.(htm|html|php|shtml)
в упорядоченный массив:
array("htm", "html", "php", "shtml")
и затем составьте список альтернатив:
/var/www/index.htm
/var/www/index.html
/var/www/index.php
/var/www/index.shtml
Сейчас у меня есть preg_match
оператор, который может разделить две альтернативы:
preg_match_all ("/\(([^)]*)\|([^)]*)\)/", $path_resource, $matches);
Может ли кто-нибудь дать мне указатель, как расширить это, чтобы принять неограниченное количество альтернатив (по крайней мере, два)? Что касается регулярного выражения, остальное я могу иметь дело.
Правило:
Список должен начинаться с (
и закрываться с )
В списке должен быть один |
(т. Е. Как минимум две альтернативы)
Любые другие вхождения (
или )
должны оставаться нетронутыми.
Обновление: Мне нужно иметь возможность также иметь дело с несколькими парами скобок, такими как:
/var/(www|www2)/index.(htm|html|php|shtml)
извините, я не сказал этого сразу.
Обновление 2: Если вы хотите сделать то, что я пытаюсь сделать в файловой системе, то обратите внимание, что glob () уже предоставляет эту функциональность из коробки. Нет необходимости реализовывать собственное решение. Подробности смотрите в ответе @ Гордона ниже.