PHP: Как мне преобразовать регулярное выражение в пример соответствия? - PullRequest
2 голосов
/ 07 февраля 2010

У меня есть регулярное выражение для сопоставления URI. Например,

preg_match("/^my\/uri\//i", "my/uri/whatever");

Который я использую для маршрутизации, например, "http://www.mywebsite.com/my/uri/page.html" будет соответствовать вышеприведенному (конечно, с удаленным протоколом / хостом).

Есть ли способ оценить регулярное выражение в наиболее общий URI, который будет соответствовать? Например,

"мой / URI /"

Ответы [ 2 ]

1 голос
/ 08 февраля 2010

Я не понял, чего вы на самом деле хотите.

Этот код может быть тем, что вам нужно:

$general_uri = 'my/uri/';
$regex = '/^' . preg_quote($general_uri) . '/i';

Если вы хотите отменить указанный выше код:

$regex = '/^my\/uri\//i';
$general_uri = str_replace('\\', '', preg_replace('/^\/\^(.*)\/i?$/', '$1', $regex));

Однако приведенный выше код не будет работать на сложных регулярных выражениях.

0 голосов
/ 08 февраля 2010

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

Я сделал сам алгоритм маршрутизации, и я просто использую и взрываюсь на '/', и он работает очень хорошо, что-то вроде Magento или Zend Framework делает это, регистрируя путь контроллеры или роутеры и их связывание.

Возможно, ваша оригинальная проблема может быть решена без необходимости написания механизма регулярных выражений на PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...