2016-02-01 14 views
5

Obecnie mam następujący kod.Uzyskiwanie identyfikatora z adresu eksplodującego

$file_id = 'https://skyvault.co/show/file?filename=6N2viQpwLKBIA6'; 
$parts = parse_url($file_id); 
$path_parts = explode('/', $parts[path]); 
$secret = $path_parts[3]; 
print $secret; 

Powyżej można zobaczyć, że staram się eksplodować przez / i to nie jest powrót wyjście szukam to tylko powracającego file i muszę go zwrócić 6N2viQpwLKBIA6 więc jak mógłbym dostać ten identyfikator?

+0

dlaczego nie używać '$ _GET ['filename']'? – CodeGodie

+0

@CodeGodie To tylko ciąg, który musi zostać przeanalizowany. –

+0

Och, widzę. Dziękuję za wskazanie tego. – CodeGodie

Odpowiedz

1

Czy można to szybko zrobić w ten sposób, jeśli adres URL to zawsze ten sam dla wszystkich elementów?

$URLComp = explode("show/file?filename=", $file_id); 
$secret = $URLComp[1]; 
print $secret; 

Głównym powodem jest to, że może być przypadki, z lub bez www, następnie z lub bez https.

+0

Próbowałem już tego i nie działało. Nie zwróciło żadnych wyników w ogóle, kiedy próbowałem i właśnie przekodowałem używając twojego kodu i nadal nie miałem szczęścia .. – Ritzy

+0

@Ritzy Działa tutaj. Sprawdź: ** http: //sandbox.onlinephpfunctions.com/code/4950c66a5dec11f6dd98f828d045e11ac207f4c6** –

+1

Tak! Pracowałem, coś w tym złego, myślę, dziękuję bardzo za bardzo szybką odpowiedź i przepraszam za głupie pytanie! – Ritzy

4

działa, ale trzeba podać indeks query. Przerobić go tak:

$file_id = 'https://skyvault.co/show/file?filename=6N2viQpwLKBIA6'; 
$parts = parse_url($file_id); 
$path_parts = explode('=', $parts['query']); 
$secret = $path_parts[1]; 
print $secret; 
+0

Lub jeszcze ładniej - bez użycia eksplodować: https://3v4l.org/8Y8Se - używając ** ['parse_str'] (http://php.net/parse_str) ** – CodeBrauer

+0

@CodeBrauer to prawda. 'parse_url' pomoże przekształcić go w jednolinijkowy. Dzięki. – CodeGodie

0

Jeśli trzeba użyć parse_url z jakiegokolwiek powodu, można użyć komponentu query zamiast path jak suggested by @CodieGodie.

Jeśli jednak korzystasz z tego adresu URL jako ciągu znaków, możesz zignorować parse_url i po prostu pracować z nim jak z ciągiem znaków.

$file_id = 'https://skyvault.co/show/file?filename=6N2viQpwLKBIA6'; 
$parts = explode('/', $file_id); 
$lastPart = end($parts); 
$varParts = explode('=', $lastPart);//also explode('?', $lastPart) if you want "filename=" 
$secret = end($varParts); 
print $secret; 

Uwaga: Ten kod będzie działać, jeśli ciąg ma zawsze ten sam format, to jest: „https://example.com/path/path/path?varName=varValue” z zaledwie 1 var na końcu adresu URL.

Powiązane problemy