2012-08-23 10 views
8

Necesito la URL codificada para procesar en una de las API. Pero requiere URL completa codificadaCodifica la URL incluyendo guiones (-) y puntos (.) En php

Por ejemplo:

URL desde

http://test.site-raj.co/999999?lpp=1&px2=IjN 

a URL codificada, como a continuación

http%3a%2f%test%site%2draj%2eco%2f999999%3flpp%3d1%26px2%3dIjN 

necesito cualquier otro símbolo que va a codificarse incluso Dot (.) y guión (-) como arriba. Por favor, hágame saber cualquier función en php/código para hacerlo.

Gracias.

+0

Su ejemplo tiene ningún guión en que –

+1

Entonces, ¿qué? @MikeB – 11684

+3

@ 11684 Necesitamos saber en qué espera que se traduzcan los guiones. De manera similar con los puntos ... simplemente los reemplazó con signos de porcentaje en su salida esperada. –

Respuesta

14

Pruebe esto. Dentro de una función, tal vez si la está utilizando más de una vez ...

$str = 'http://test.site.co/999999?lpp=1&p---x2=IjN'; 
$str = urlencode($str); 
$str = str_replace('.', '%2E', $str); 
$str = str_replace('-', '%2D', $str); 
echo $str; 
+0

ya puede estar bien, pero si existen otros caracteres especiales ¿también significa cómo hacerlo? –

8

Esto codificará todos los caracteres que no sean letras simples o números. Todavía se puede decodificar esto con el urldecode estándar o rawurldecode:

function urlencodeall($x) { 
    $out = ''; 
    for ($i = 0; isset($x[$i]); $i++) { 
     $c = $x[$i]; 
     if (!ctype_alnum($c)) $c = '%' . sprintf('%02X', ord($c)); 
     $out .= $c; 
    } 
    return $out; 
} 
-3

¿Por qué no usar rawurlencode

por ejemplo rawurlencode("http://test.site-raj.co/999999?lpp=1&px2=IjN")

+3

http://www.php.net/rawurlencode dice Devuelve una cadena en la cual todos los caracteres no alfanuméricos excepto '-_. ~' Han sido reemplazados con un signo de porcentaje (%) seguido de dos dígitos hexadecimales. Eso no es lo que el OP solicitó. –

Cuestiones relacionadas