Получить символы после последнего / в url
Я хочу получить символы после последнего / в url, как http://www.vimeo.com/1234567
Как мне работать с php?
8 ответов:
очень просто:
$id = substr($url, strrpos($url, '/') + 1);
strrpos возвращает позицию последнего вхождения символа; substr возвращает все после этой позиции.
как упоминалось redanimalwar если нет косой черты это не работает правильно, так как
strrpos
возвращает false. Вот более надежная версия:$pos = strrpos($url, '/'); $id = $pos === false ? $url : substr($url, $pos + 1);
Вы можете взрываться на основе"/", и вернуть последнюю запись:
print end( explode( "/", "http://www.vimeo.com/1234567" ) );
это основано на раздутии строки, что-то, что не обязательно, если вы знаете, что шаблон самой строки не скоро изменится. Вы можете также использовать регулярное выражение, чтобы найти это значение в конце строки:
$url = "http://www.vimeo.com/1234567"; if ( preg_match( "/\d+$/", $url, $matches ) ) { print $matches[0]; }
два один лайнер-я подозреваю, что первый быстрее, но второй красивее и в отличие от
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; }