Код (PHP): $str = '/webdata/w/statistics.php?show=web'; preg_match("/(.*)\/(.+)\?*(.*)/", $str, $matches); print_r($matches); Выводит: Хотя по идее второй элемент должен быть просто именем файла а не QUERY_STRING. Что не так с регуляркой и как заставить ее работать (нужно именно работающее регулярное выражение). Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
жадностью немного поиграться. символ вопроса входит и в первую и во вторую группу. поскольку сам вопрос - может быть а может и не быть - и плюс он же еще и может входить в третью группу - механизм пихает вопрос в первое удобное место. а поскольку слэш обязательный то подходящим местом становится именно вторая группа. а точно регулярка нужна? всякие дирнеймы и парс_урлы делают то же самое но точно работающим путём
В какую сторону с жадностью играться не совсем ясно. Если жадность поставить, то в результате будет только один символ. Да нужен именно регекс. Пока только такой вариант придумал: Код (PHP): preg_match("/(.*)\/(.[^\?]+)\?*(.*)/", $str, $matches); Так что вопрос в общем-то решен. Спасибо вам за участие! Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.