2013-06-18 5 views

risposta

4

Prova questo:

$str = 'http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip'; 
$pos = strrpos($str, '/') + 1; 
$result = substr($str, 0, $pos) . urlencode(substr($str, $pos)); 

Stai cercando l'ultima occorrenza del segno barra. La parte prima è ok, quindi copiala. E urlencode il resto.

+1

Lavorare perfettamente con i missing ")" alla fine :) –

+1

@WinstonSmith è possibile upvote la risposta;) – ducin

+0

Vorrei anche usa rawurlencode invece di urlencode per i nomi dei file –

0

Estrarre il nome file e scapparlo.

$temp = explode('/', $myurl); 
$filename = array_pop($temp); 

$newFileName = urlencode($filename); 

$myNewUrl = implode('/', array_push($newFileName)); 
+0

questa è una soluzione lenta. Non c'è bisogno di scaricare la stringa in un array. – ducin

0

Prima di tutto, here's why si dovrebbe utilizzare rawurlencode invece di urlencode.

Per rispondere alla tua domanda, invece di cercare un ago in un pagliaio e rischiare di non codificare altri possibili caratteri speciali nel tuo URL, codifica tutto e poi correggi le barre (ei due punti).

<?php 
$myurl = 'http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip'; 
$myurl = rawurlencode($myurl); 
$myurl = str_replace('%3A',':',str_replace('%2F','/',$myurl)); 

I risultati in questo:

http://www.example.com/some_folder/some%20file%20%5Bthat%5D%20needs%20%22to%22%20be%20%28encoded%29.zip

Problemi correlati