chcę uzyskać znaki po ostatnim/url jak w http://www.vimeo.com/1234567
Get znaki po ostatnim/url w
Jak zrobić z php?
chcę uzyskać znaki po ostatnim/url jak w http://www.vimeo.com/1234567
Get znaki po ostatnim/url w
Jak zrobić z php?
Bardzo prosto:
$id = substr($url, strrpos($url, '/') + 1);
strrpos ją pozycję ostatniego wystąpienia kreską; substr zwraca wszystko po tej pozycji.
Jak wspomniano przez redanimalwar jeśli nie ma ukośnik to nie działa prawidłowo ponieważ strrpos
zwraca false. Oto bardziej wytrzymała wersja:
$pos = strrpos($url, '/');
$id = $pos === false ? $url : substr($url, $pos + 1);
ooh super .. to dla mnie praca .. dzięki – deadman
ładne i proste rozwiązanie, dziękuję. –
To cięcie pierwszego znaku, jeśli w ogóle nie ma ukośnika. – redanimalwar
Mogłabyś explode oparte na „/”, i powrócić ostatni wpis:
print end(explode("/", "http://www.vimeo.com/1234567"));
To oparta na dmuchanie ciąg siebie, coś, co nie jest konieczne, jeśli znasz wzór napisu sama się wkrótce nie zmieni. Można alternatywnie użyć wyrażenia regularnego, aby znaleźć tę wartość na koniec napisu:
$url = "http://www.vimeo.com/1234567";
if (preg_match("/\d+$/", $url, $matches)) {
print $matches[0];
}
'eksplodować' zawsze wydaje się być bardziej narzutową dla mnie, chociaż nigdy nie miałem czasu, aby zobaczyć, jak szybko to jest. – DisgruntledGoat
Wygląda na to, że explode() jest nieco wolniejszy. W przypadku instancji 10k jest to ilość czasu potrzebna na oba. substr() first: 0.013657/0.045038 – Sampson
Może być wolniejszy, ale wolę eksplodować tutaj. W szczególności jeśli URL nie zawiera żadnych "/" +1 w odpowiedzi na strrpos sprawia, że eksplozja bałaganu jest w stanie przezwyciężyć. – Noam
array_pop(explode("/", "http://vimeo.com/1234567"));
zwróci ostatni element przykładowy adres URL
w php7 Zwraca uwagę: 'PHP Notice: Tylko zmienne powinny być przekazywane przez referencję'. – billynoah
$str = "http://www.vimeo.com/1234567";
$s = explode("/",$str);
print end($s);
Moja wersja, chociaż wynik końcowy jest taki sam jak opublikowany, umożliwia OP używanie innych elementów podzielonego ciągu, jeśli chce. – ghostdog74
to jest poprawna odpowiedź, ponieważ tytuł pyta po "last"/in url –
$str = basename($url);
Czy działa to w przypadku adresów URL? Czy ścieżka do plików nie jest przeznaczona na basename? –
Wydaje się działać bez zarzutu, To jest funkcja ciągu; nie sprawdza, czy ścieżka istnieje. –
Oto piękny funkcja dynamiczna, którą napisałem, aby usunąć ostatnią część adresu URL lub ścieżki.
/**
* 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;
}
dwa jeden wkładki - Podejrzewam, że pierwszy z nich jest szybsza, ale drugi jest ładniejszy iw przeciwieństwie end()
i array_pop()
, można przekazać wynik funkcji bezpośrednio do current()
bez generowania żadnego zawiadomienia lub ostrzeżenia, ponieważ nie robi” t przesuń wskaźnik lub zmień tablicę.
$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)));
Możecie znaleźć [ 's ($ str) -> afterLast ('/')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str .php # L445) pomocne, jak znaleźć w [tej samodzielnej bibliotece] (https://github.com/delight-im/PHP-Str). – caw