2010-04-01 8 views
-1

Voir cette chaîne:PHP champ URL preg_replace

$string = "http://www.url.com/?fieldA=123&fieldB=456&fieldC=789"; 

En supposant "fieldB" a toujours une valeur numérique non décimale positive (mais pas nécessairement par trois chiffres), quelle commande preg_replace dois-je retirer complètement, par exemple que la chaîne va alors lire:

$string = "http://www.url.com/?fieldA=123&fieldC=789"; 

Répondre

3
$string = preg_replace('/&?fieldB=[0-9]+/', '', $string); 
+0

@Chad Birch, n'est pas '\ d' plus rapide que' [0-9] '? –

+0

Cela pourrait être, ou cela pourrait être plus lent, selon la façon dont il est géré. De toute façon, c'est le genre d'optimisation que je vois au niveau de "ne sont pas des guillemets simples plus rapides que des guillemets doubles?" Cela ne vaut pas vraiment la peine de s'inquiéter, je trouve simplement '[0-9]' plus facile à lire. –

+0

Cela échouera si fieldB est le premier paramètre. – MadCoder

0
$string = preg_replce('/fieldB=([0-9]+)/', '', $string); 
+0

typo, removed :) – bigstylee

+1

Cela laisserait un «&» supplémentaire dans l'URL. –

1

Essayez ceci:

$string = preg_replace('/&fieldB=[0-9]+/', '', $string); 

Exemple de travail Code:

$string = "http://www.url.com/?fieldA=123&fieldB=456&fieldC=789"; 
$string = preg_replace('/&fieldB=[0-9]+/', '', $string); 
echo $string; 

//gives http://www.url.com/?fieldA=123&fieldC=789 
+0

@zombat, cela ressemble beaucoup à une réponse qui a été clairement affichée avant la vôtre. –

+0

Lorsque j'ai posté le mien, les autres dans le fil contenaient tous un code incorrect. – zombat

1

Avec preg_replace():

$url = preg_replace('!&?fieldB=\d+!', '', $string); 

Vous devez supprimer le & avant aussi. En outre, n'utilisez pas [0-9]. Utilisez \d à la place. Cela dit, PHP a de bonnes fonctions natives pour manipuler les URL. Une autre façon de le faire:

$url = parse_url($string); 
parse_str($url['query'], $query); 
unset($query['fieldB']); 
$url['query'] = http_build_query($query); 
$string = http_build_url($url); 

Note: Malheureusement, la HTTP extension n'est pas une extension standard, donc vous devez l'installer.