Получить символы после последнего / в URL-адресе

Я хочу получить символы после последнего / в URL-адресе, например http://www.vimeo.com/1234567

Как мне с php?

Очень просто:

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

strrpos получает позицию последнего появления косой черты; substr возвращает все после этой позиции.


Как упоминалось redanimalwar, если нет косой черты, это не работает корректно, поскольку strrpos возвращает false. Вот более надежная версия:

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

Вы можете взорваться на основе «/» и вернуть последнюю запись:

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

Это основано на раздувании струны, что-то, что не обязательно, если вы знаете, что образец самой строки не скоро изменится. Вы также можете использовать регулярное выражение для определения этого значения в конце строки:

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

Вы можете использовать substr и 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); 

array_pop(explode("/", "http://vimeo.com/1234567")); вернет последний элемент примера url

Два одного лайнера – я подозреваю, что первый из них быстрее, но второй является более красивым и в отличие от end() и array_pop() , вы можете передать результат функции непосредственно в current() не генерируя никаких уведомлений или предупреждений, поскольку это не переместите указатель или измените массив.

 $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 array, get the first index. echo current(array_reverse(explode('/',$var))); 

Вот красивая динамическая функция, которую я написал для удаления последней части URL-адреса или пути.

 /** * 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; }