2010-02-07 4 views
2

J'ai une expression régulière pour les URI correspondants. Par exemple,PHP: Comment convertir une expression régulière en exemple?

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

que j'utilise pour le routage, pour exmample « http://www.mywebsite.com/my/uri/page.html » correspondra au-dessus (avec le protocole/hôte retiré bien sûr).

Existe-t-il un moyen d'évaluer l'expression régulière dans l'URI la plus générale qui correspond? Par exemple,

« mon/uri/»

+0

Vous souhaitez simplement que votre expression rationnelle actuelle corresponde à «my/uri» et «my/uri/*»? –

+1

Quelle question intéressante. Il sera assez difficile de gérer des choses comme '/\w\b.+\b\s/' (une solution: 'a'). –

+0

Je souhaite réinterpréter l'expression rationnelle sous la forme la plus simplifiée. – Petah

Répondre

1

Je n'ai pas compris ce que vous voulez vraiment.

Ce code peut-être ce dont vous avez besoin:

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

Si vous voulez inverser le code ci-dessus:

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

Cependant code ci-dessus ne fonctionnera pas sur les expressions rationnelles compliquées.

+0

Je suppose que cela fonctionnera pour regex simple. Merci – Petah

0

Peut-être que si vous pouvez dire le problème d'origine qui vous mène dans ce que quelqu'un peut donner impasse une torsion sur la situation. Je me suis fait un algoritm de routage et j'utilise et explose sur '/' et ça marche très bien, quelque chose comme Magento ou Zend Framework le fait, en enregistrant des contrôleurs de chemin ou des routeurs et en les reliant.

Peut-être que votre problème d'origine peut être résolu sans avoir besoin d'écrire un moteur d'expressions régulières avec PHP.

Questions connexes