获取URL PHP的最后部分
我只是想知道如何使用PHP提取URL的最后部分。
示例url是:
http://domain.com/artist/song/music-videos/song-title/9393903 现在我怎样才能提取使用PHP的最后一部分?
 9393903 
在URL中总是有相同数量的variables,而ID总是在最后。
 您可以使用preg_match来匹配所需的URL部分。 
 在这种情况下,由于模式很简单,我们正在寻找一个正斜杠( \/和我们必须逃避它,因为正斜杠表示正则expression式模式的开始和结束),以及一个或多个数字( \d+ )在string( $ )的最后。  \d+周围的括号用于捕捉我们想要的作品:即结束。 然后我们把我们想要的结尾( $end )分配给$matches[1] (不是$matches[0] ,因为它与$url (即整个string)相同)。 
 $url='http://domain.com/artist/song/music-videos/song-title/9393903'; if(preg_match("/\/(\d+)$/",$url,$matches)) { $end=$matches[1]; } else { //Your URL didn't match. This may or may not be a bad thing. } 
  注意:您可能会也可能不想为这个正则expression式添加一些更复杂的内容。 例如,如果您知道您的URLstring始终以http://开头,则正则expression式可以变成/ /^http:\/\/.*\/(\d+)$/ http:// /^http:\/\/.*\/(\d+)$/ ( /^http:\/\/.*\/(\d+)$/ (其中.*表示零个或多个字符(这不是换行符))。 
拆分它并得到最后一个元素:
 $end = end(explode('/', $url)); # or: $end = array_slice(explode('/', $url), -1)[0]; 
  编辑:为了支持Apache风格的规范url, rtrim很方便: 
 $end = end(explode('/', rtrim($url, '/'))); # or: $end = array_slice(explode('/', rtrim($url, '/')), -1)[0]; 
一个不同的例子,我认为更可读性是( 演示 ):
 $path = parse_url($url, PHP_URL_PATH); $pathFragments = explode('/', $path); $end = end($pathFragments); 
这个例子也考虑到只处理URL的path。
 完成这个最简单的方法是用basename() 
 echo basename('http://domain.com/artist/song/music-videos/song-title/9393903'); 
哪个会打印
9393903
当然,如果最后有一个查询string,它将被包含在返回的值中,在这种情况下,接受的答案是一个更好的解决scheme。
如果你正在寻找一个强大的版本,可以处理任何forms的url ,这应该做的很好:
 <?php $url = "http://foobar.com/foo/bar/1?baz=qux#fragment/foo"; $lastSegment = basename(parse_url($url, PHP_URL_PATH)); 
 $id = strrchr($url,"/"); $id = substr($id,1,strlen($id)); 
 这里是strrchr函数的描述: http : strrchr 
希望这是有用的!
最优雅的解决scheme之一是在这里获取最后/在url后的字符
由DisgruntledGoat
 $id = substr($url, strrpos($url, '/') + 1); 
strrpos获取最后一次斜杠的位置; substr返回该位置后的所有内容。
另一种select:
 $urlarray=explode("/",$url); $end=$urlarray[count($urlarray)-1]; 
 一个class轮: $page_path = end(explode('/', trim($_SERVER['REQUEST_URI'], '/'))); 
获取URI,修剪斜杠,转换为数组,抓住最后一部分
这将很容易地完成所需的URL的最后一部分
 $url="http://domain.com/artist/song/music-videos/song-title/9393903"; $requred_string= substr(strrchr($url, "/"), 1); 
这将会在右边第一个“/”之后得到你的string。
1-衬垫
 $end = preg_replace( '%^(.+)/%', '', $url ); // if( ! $end ) no match. 
这只是删除最后一个斜杠之前的所有内容,包括它。
一行工作答案:
 $url = "http://www.yoursite/one/two/three/drink"; echo $end = end((explode('/', $url))); 
输出: 喝
 $mylink = $_SERVER['PHP_SELF']; $link_array = explode('/',$mylink); echo $lastpart = end($link_array);