2010-10-28 28 views
0

Je suis en train d'obtenir un ID utilisateur à partir d'une chaîne telle que:Suppression de contenu du début et de fin de chaîne (PHP)

http://www.abcxyz.com/123456789/

Pour apparaître comme 123.456.789 décapage essentiellement les informations au premier/et aussi supprimer la fin /. J'ai jeté un coup d'œil sur le net mais il semble y avoir tellement de solutions mais rien ne répond à la fois au début et à la fin.

Merci :)

Update 1

Le lien peut prendre deux formes: mod_rewrite comme ci-dessus et aussi "http://www.abcxyz.com/profile?user_id=123456789"

+0

Est-ce que l'URL peut contenir plus, par exemple 'http: // example.com/12345/foo' et si oui: le numéro sera-t-il toujours le premier? Et combien de temps ce nombre peut-il être? – Gordon

Répondre

3

j'utiliser parse_url() pour extraire proprement le composant de chemin depuis l'URL:

$path = parse_URL("http://www.example.com/123456789/", PHP_URL_PATH); 

puis diviser le chemin en ses éléments en utilisant explode():

$path = trim($path, "/"); // Remove starting and trailing slashes 
$path_exploded = explode("/", $path); 

puis sortie du premier composant de la voie:

echo $path_exploded[0]; // Will output 123456789 

cette méthode ne fonctionnera en cas de pointe comme

  • http://www.example.com/123456789?test
  • http://www.example.com//123456789
  • www.example.com/123456789/abcdef

et même

  • /123456789/abcdef
+2

s'il n'y a que le nombre, vous pouvez juste couper: 'echo trim (parse_url ('http://www.abcxyz.com/123456789/', PHP_URL_PATH), '/');' – Gordon

+0

Thats super, cela fonctionne bien .Pourrais-je également obtenir ce travail dans le cas de "http://www.abcxyz.com/profile?user_id=123456789"? – lethalMango

+0

@lethal Oui, vous pouvez obtenir la partie 'user_id' en utilisant' PHP_URL_QUERY' dans l'appel 'parse_url'. Voir la page de manuel pour toutes les combinaisons possibles. –

1
$string = 'http://www.abcxyz.com/123456789/'; 
$parts = array_filter(explode('/', $string)); 
$id = array_pop($parts); 
0

S'il n'y a d'autres chiffres dans l'URL, vous pouvez également faire

echo filter_var('http://www.abcxyz.com/123456789/', FILTER_SANITIZE_NUMBER_INT); 

à dépouiller tout ce n'est pas une annonce igit.

Cela peut être un peu plus rapide que d'utiliser la combinaison parse_url + parse_str.

0

Si l'ID est toujours le dernier membre de l'URL

$url="http://www.abcxyz.com/123456789/"; 
$id=preg_replace(",.*/([0-9]+)/$,","\\1",$url); 
echo $id; 
0

Si votre domaine ne contient aucun numéro, vous pouvez gérer les deux situations (avec ou sans user_id) en utilisant:

<?php 

$string1 = 'http://www.abcxyz.com/123456789/'; 
$string2 = 'http://www.abcxyz.com/profile?user_id=123456789'; 

preg_match('/[0-9]+/',$string1,$matches); 
print_r($matches[0]); 


preg_match('/[0-9]+/',$string2,$matches); 
print_r($matches[0]); 


?>