Ottieni caratteri dopo l'ultimo / nell'URL

Voglio get i personaggi dopo l'ultimo / in un URL come http://www.vimeo.com/1234567

Come faccio con PHP?

Molto semplicemente:

 $id = substr($url, strrpos($url, '/') + 1); 

strrpos ottiene la posizione dell'ultima occorrenza della barra; substr restituisce tutto dopo quella posizione.


Come accennato da redanimalwar se non c'è nessuna barra questo non funziona correttamente dal momento che strrpos restituisce false. Ecco una versione più robusta:

 $pos = strrpos($url, '/'); $id = $pos === false ? $url : substr($url, $pos + 1); 
 $str = basename($url); 

Potresti esplodere in base a "/" e restituire l'ultima voce:

 print end( explode( "/", "http://www.vimeo.com/1234567" ) ); 

Questo si basa sul far saltare la corda, qualcosa che non è necessario se si conosce il model della string stessa che non cambierà presto. In alternativa, potresti usare un'espressione regolare per individuare quel valore alla fine della string:

 $url = "http://www.vimeo.com/1234567"; if ( preg_match( "/\d+$/", $url, $matches ) ) { print $matches[0]; } 

Puoi usare substr e strrchr :

 $url = 'http://www.vimeo.com/1234567'; $str = substr(strrchr($url, '/'), 1); echo $str; // Output: 1234567 
 $str = "http://www.vimeo.com/1234567"; $s = explode("/",$str); print end($s); 

arrays_pop(explode("/", "http://vimeo.com/1234567")); restituirà l'ultimo elemento dell'URL di esempio

Due liners: sospetto che il primo sia più veloce, ma il secondo è più arrays_pop() e diversamente da end() e arrays_pop() , puoi passare il risultato di una function direttamente a current() senza generare alcun avviso o avviso poiché non lo fa sposta il puntatore o modifica l'arrays.

 $var = 'http://www.vimeo.com/1234567'; // VERSION 1 - one liner simmilar to DisgruntledGoat's answer above echo substr($a,(strrpos($var,'/') !== false ? strrpos($var,'/') + 1 : 0)); // VERSION 2 - explode, reverse the arrays, get the first index. echo current(arrays_reverse(explode('/',$var))); 

Ecco una bellissima function dynamic che ho scritto per rimuovere l'ultima parte dell'URL o del path.

 /** * remove the last directories * * @param $path the path * @param $level number of directories to remove * * @return string */ private function removeLastDir($path, $level) { if(is_int($level) && $level > 0){ $path = preg_replace('#\/[^/]*$#', '', $path); return $this->removeLastDir($path, (int) $level - 1); } return $path; }