2010-08-14 3 views
0

Je URL comme cephp - analyser url amicale

/cp/foo-bar/another-testing 

comment l'analyser avec le motif

/cp/{0}-{1}/{2} 

résultats seront

0:foo 
1:bar 
2:another-testing 

je besoin d'une solution globale analyser toute sorte d'URL avec un motif comme ça. Je veux dire en utilisant {0}, {1} drapeau.

+0

si elle va être une solution globale, comment se fait une autre-test est analysé différemment? – stillstanding

Répondre

2
if (preg_match('#/cp/([^/]+?)-([^/]+?)/([^/]+)#'), $url, $matches)) { 
    //look into $matches[1], $matches[2] and $matches[3] 
} 
+0

Salut, quel est le caractère #? – StoneHeart

+0

@Stone C'est juste un délimiteur. Voir http://pt.php.net/manual/fr/regexp.reference.delimiters.php – Artefacto

1

Au lieu d'utiliser {0}, {1}, {2}, je vous propose une nouvelle façon: en utilisant {$s[0]}, {$s[1]}, {$s[2]}:

$your_url = '/cp/foo-bar/another-testing'; 
$s = explode('/', $your_url); 
if(!$s[0]) 
    array_shift($s); 
if($temp = array_pop($s)) 
    $s[] = $temp; 
//then 
$result = "/cp/{$s[0]}-{$s[1]}/{$s[2]}";