Antworten:
Ganz einfach:
$id = substr($url, strrpos($url, '/') + 1);
strrpos erhält die Position des letzten Auftretens des Schrägstrichs; substr gibt alles nach dieser Position zurück.
Wie von redanimalwar erwähnt, funktioniert dies nicht richtig, wenn kein Schrägstrich vorhanden ist, da strrpos
false zurückgegeben wird. Hier ist eine robustere Version:
$pos = strrpos($url, '/');
$id = $pos === false ? $url : substr($url, $pos + 1);
$str = basename($url)
nicht mehr Upvotes bekommt, funktioniert für mich einwandfrei.
$str = basename($url);
Sie könnten basierend auf "/" explodieren und den letzten Eintrag zurückgeben:
print end( explode( "/", "http://www.vimeo.com/1234567" ) );
Das basiert darauf, dass die Saite auseinandergeblasen wird. Dies ist nicht erforderlich, wenn Sie wissen, dass sich das Muster der Saite selbst nicht bald ändern wird. Alternativ können Sie einen regulären Ausdruck verwenden, um diesen Wert am Ende der Zeichenfolge zu suchen:
$url = "http://www.vimeo.com/1234567";
if ( preg_match( "/\d+$/", $url, $matches ) ) {
print $matches[0];
}
explode
scheint mir immer mehr Aufwand zu sein, obwohl ich es noch nie geplant habe, um zu sehen, wie schnell es ist.
Sie können verwenden substr
und 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);
Zwei Einzeiler - ich vermute , die erste ist schneller , aber zweite ist schöner und im Gegensatz zu end()
und array_pop()
Sie das Ergebnis einer Funktion direkt passieren kann current()
ohne Erzeugung Notiz oder eine Warnung , da es nicht den Zeiger nicht bewegt oder das Array ändern.
$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()
diesen Weg in PHP 5.4+ und höher verwenden, wird ein Hinweis ausgegeben. Laut docs: " Sie müssen eine echte Variable übergeben und keine Funktion, die ein Array zurückgibt, da nur tatsächliche Variablen als Referenz übergeben werden dürfen. "
Hier ist eine schöne dynamische Funktion, die ich geschrieben habe, um den letzten Teil der URL oder des Pfads zu entfernen.
/**
* 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('/')
hilfreiche Informationen in dieser eigenständigen Bibliothek .