2012-11-03 4 views
-1

Comment puis-je convertir une chaîne comme ceci:URL avec php

[www.example.com?type=PC&brand=Dell&id=2] 

à

[www.example.com/PC/Dell/2.html] 

THz pour votre aide!

+4

** URL HTACCESS RÉÉCRITURE ** est la réponse –

+0

@ Mr.Alien: Il n'a jamais rien dit de "réécriture", il parlait "remplacer" . –

+0

@MadaraUchiha Je ne m'attends pas à ce que vous n'ayez pas ce qu'il voulait vraiment, il ne doit pas savoir le vrai mot –

Répondre

2

Essayez dans votre .htaccess

Options +FollowSymLinks 
RewriteEngine on 

RewriteRule /(.*)/(.*)/(.*)\.html www.example.com?type=$1&brand=$2&id=$3 
+0

Voir mon commentaire sur la question. OP n'a jamais rien dit sur la réécriture. Il veut remplacer. –

+1

@MadaraUchiha il s'est avéré que l'OP voulait vraiment la réécriture pas la conversion de chaîne ;-) –

+0

En effet, il a. Ce qui signifie que le PO pourrait apporter quelques éclaircissements dans sa question. –

3

Si vous voulez mapper le premier maillon dans la seconde, pour que les URL de votre site plus joli, rendez-vous avec .htaccess et Mod_rewrite!

Ceci est la solution correcte:

$str = "[www.example.com?type=PC&brand=Dell&id=2]"; 

$str = trim($str,"[]"); //Remove square brackets, we'll add them back later 
$url = parse_url($str); //Parse the URL into an array 

$query = $url["query"]; //Part after the ? 

$parts = explode("&", $query); //Have each GET variable into an array element 
$parts = array_map(function($e) { 
    return preg_replace("/[^=]+=/", "", $e); 
}, $parts); //Remove the part before the =. 

$parts = implode("/", $parts); //Implode it back into a string. 
$result = $url["path"] . "/" . $parts . ".html"; //Putting it back together 
$result = "[$result]"; //I promised I'll put it back! 

var_dump($result); 
+1

Je vais upvote celui-ci car c'est la réponse selon la question si OP pensé autrement et accepté différent. – itachi