utf8 unescape rawurlencode online htmlentities html_entity_decode ejemplo php urlencode

php - unescape - urlencode online



¿Cómo codificar URL correctamente una cadena en PHP? (3)

Aquí está mi caso de uso, que requiere una cantidad excepcional de codificación. Tal vez piensas que fue artificial, pero ejecutamos esto en producción. Coincidentemente, esto cubre todo tipo de codificación, por lo que estoy publicando como un tutorial.

Usar la descripción del caso

Alguien acaba de comprar una tarjeta de regalo prepaga ("token") en nuestro sitio web. Los tokens tienen las URL correspondientes para canjearlos. Este cliente quiere enviarlo por correo electrónico a otra persona. Nuestra página web incluye un enlace de mailto que les permite hacer eso.

Código PHP

// The order system generates some opaque token $token = ''w%a&!e#"^2(^@azW''; // Here is a URL to redeem that token $redeemUrl = ''https://httpbin.org/get?token='' . urlencode($token); // Actual contents we want for the email $subject = ''I just bought this for you''; $body = ''I just bought a widget for you. Please enter your shipping details here: '' . $redeemUrl; // A URI for the email as prescribed $mailToUri = ''mailto:?subject='' . rawurlencode($subject) . ''&body='' . rawurlencode($body); // Print an HTML element that links to that page echo ''<a href="'' . htmlspecialchars($mailToUri) . ''">Email your friend</a>'';

Nota: lo anterior supone que está generando un documento de text/html . Si su tipo de medio de salida es text/json , simplemente use $retval[''url''] = $mailToUri; porque la codificación de salida es manejada por json_encode() .

Caso de prueba

  1. Ejecute el código en un sitio de prueba PHP ( ¿hay uno canónico que debería mencionar aquí? )
  2. Haga clic en el enlace
  3. Envía el correo
  4. Recibe el correo electrónico
  5. Haga clic en ese enlace

Debería ver:

"args": { "token": "w%a&!e#/"^2(^@azW" },

Y, por supuesto, esta es la representación JSON de $token anterior.

Estoy haciendo una página de búsqueda, donde search.php?query=your query una consulta de búsqueda y el formulario se envía a search.php?query=your query . ¿Qué función de PHP es la mejor y que debo usar para codificar / decodificar la consulta de búsqueda?


El urlencode() y urldecode() .

Sin embargo, no debería necesitar usar urldecode() en las variables que aparecen en $_POST y $_GET .