Yanıtlar:
Çok basit:
$id = substr($url, strrpos($url, '/') + 1);
strrpos , eğik çizginin son geçtiği konumu alır; substr , bu konumdan sonraki her şeyi döndürür.
Redanimalwar tarafından belirtildiği gibi, eğer bölü işareti yoksa, strrposyanlış döndürdüğü için bu doğru çalışmaz . İşte daha sağlam bir versiyon:
$pos = strrpos($url, '/');
$id = $pos === false ? $url : substr($url, $pos + 1);
$str = basename($url)daha fazla oy almadığını merak ediyorum , benim için mükemmel çalışıyor.
$str = basename($url);
Sen olabilir patlayabilir dayanan "/" ve son girişi verir:
print end( explode( "/", "http://www.vimeo.com/1234567" ) );
Bu, ipin parçalanmasına dayanır, eğer ipin deseninin yakında değişmeyeceğini biliyorsanız gerekli olmayan bir şey. Alternatif olarak, bu değeri dizenin sonunda bulmak için normal bir ifade kullanabilirsiniz:
$url = "http://www.vimeo.com/1234567";
if ( preg_match( "/\d+$/", $url, $matches ) ) {
print $matches[0];
}
explodeNe kadar hızlı olduğunu görmek için zamanlamamama rağmen bana her zaman daha fazla yük gibi geliyor.
Sen kullanabilirsiniz substrve 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);
İki bir gömlek - Birincisinin daha hızlı olduğundan şüpheleniyorum, ancak ikincisi daha güzel ve farklıdır end()ve array_pop()bir işlevin sonucunu current(), işaretçiyi hareket ettirmediği veya diziyi değiştirmediği için herhangi bir uyarı veya uyarı oluşturmadan doğrudan iletebilirsiniz .
$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)));
end()php 5.4+ ve üzeri sürümlerde bu yolu kullanmak bir uyarı atacaktır. Dokümanlara göre: " Ona gerçek bir değişken iletmelisiniz, bir dizi döndüren bir işlev değil, çünkü yalnızca gerçek değişkenler referansla iletilebilir. "
İşte url'nin veya yolun son bölümünü kaldırmak için yazdığım güzel bir dinamik işlev.
/**
* 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;
}
s($str)->afterLast('/')olduğu gibi yararlı bulabilirsiniz .