2016-02-01 9 views
5

Zur Zeit habe ich den folgenden Code.Erhalte die ID von explodierender URL

$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; 

Oben sehen Sie, dass ich von / explodiert bin versucht und es zurückkehrt nicht den Ausgang ich es bin auf der Suche ist nur file Rückkehr und ich brauche es 6N2viQpwLKBIA6 so zurück, wie konnte ich diese ID bekommen?

+0

Warum nicht '$ _GET ['Dateiname']' '? – CodeGodie

+0

@CodeGodie Das ist nur eine Zeichenfolge, die geparst werden muss. –

+0

Oh ich verstehe. Danke, dass du darauf hingewiesen hast. – CodeGodie

Antwort

1

Ist es für Sie möglich, es auf diese Weise schnell zu tun, wenn die URL immer gleich für alle Elemente ist?

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

Der Hauptgrund ist, könnte es Fälle mit oder ohne www sein, dann mit oder ohne https.

+0

Ich habe das schon versucht und es schien nicht zu funktionieren .. es gab keine Ergebnisse überhaupt, als ich es versuchte und ich nur mit Ihrem Code und noch kein Glück recoded. – Ritzy

+0

@Ritzy Es funktioniert hier. Überprüfen Sie: ** http: //sandbox.onlinephpfunctions.com/code/4950c66a5dec11f6dd98f828d045e11ac207f4c6** –

+1

Yep! Ich habe es funktioniert, ich habe etwas falsch gemacht, denke ich, vielen Dank für die extrem schnelle Antwort und Entschuldigung für die dumme Frage! – Ritzy

4

parse_url funktioniert, aber Sie müssen den query Index angeben. Redo es wie folgt aus:

$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

Oder noch hübscher - ohne zu explodieren: https://3v4l.org/8Y8Se - mit ** ['parse_str'] (http://php.net/parse_str) ** – CodeBrauer

+0

@CodeBrauer das ist wahr. 'parse_url' würde helfen, es zu einem Einzeiler zu machen. Vielen Dank. – CodeGodie

0

Wenn Sie parse_url aus irgendeinem Grund verwenden muss, können Sie die query Komponente verwenden können, statt path als suggested by @CodieGodie. Wenn Sie mit dieser URL als Zeichenfolge arbeiten, können Sie parse_url ignorieren und einfach wie eine Zeichenfolge damit arbeiten.

$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; 

Hinweis: Dieser Code wird funktionieren, wenn die Zeichenfolge immer das gleiche Format hat, das ist: ‚https://example.com/path/path/path?varName=varValue‘ mit nur 1 var am Ende der URL.

Verwandte Themen