2009-11-19 5 views
0

Cette question est plus d'un "quelle est la meilleure/la plus facile à faire" -type-of-question. Je voudrais simplement saisir l'identifiant utilisateur à partir d'une chaîne telle quephp obtenant une partie d'une URL dans une chaîne

<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a> 

Je voudrais analyser la chaîne et obtenir juste la "123456" partie.

Je pensais que je pourrais exploser la chaîne, mais alors je devrais obtenir id=123456&blahblahblah et je suppose que je devrais en quelque sorte supprimer dynamiquement la poubelle de la fin. Je pense que c'est peut-être possible avec regex mais je suis assez nouveau sur PHP et donc regex est un peu au dessus de moi.

Répondre

1

Il suffit de saisir un caractère de id= jusqu'à & ou " (ce dernier compte pour le cas où id est mis dernière sur la chaîne de requête)

$str = 'a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>'; 

preg_match('/id=([^&"]+)/', $str, $match); 
$id = $match[1]; 
0

Regex:

.*id[=]([0-9]*).*$ 
2

La fonction parse_str() aidera ici

$str = "profile.php?rdc332738&amp;id=123456&amp;refid=22"; 
parse_str($str); 
echo $id; //123456 
echo $refid; //22 
+0

On dirait que 'parse_str()' ne gère pas la forme (correcte) avec '& 'mais ne comprend que le simple' & ', donc ce code ne fonctionne pas. –

+0

En outre, cela fonctionne seulement si la chaîne contient ** seulement ** la chaîne de requête, si vous incluez 'profile.php? ', Elle devient confuse et perd le premier argument. –

0

si vous éclatez la chaîne:

$string="<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>" 
$string_components=explode('&amp;','$string'); 

La partie ID utilisateur (id = 123456) sera:

$user_id_part=$string_components[1]; 

alors vous pourriez faire une chaîne de remplacement:

$user_id=str_replace('id=','$user_id_part'); 

Et vous avez l'ID utilisateur

Questions connexes