Decodifica dell'URL in PHP
Domanda
Sto cercando di decodificare questa stringa URL usando la funzione UrldeCode di PHP:
urldecode("Ant%C3%B4nio+Carlos+Jobim");
Questo dovrebbe produrre ...
'Antônio Carlos Jobim'
... ma invece lo sta oggente
'Antônio Carlos Jobim'
Ho testato la stringa in a Decoder online basato su JS Con grande successo, ma non riesco a fare questo lato del server di operazione. Qualche idea?
Soluzione
La tua stringa è anche UTF-8 codificato. Questo funzionerà:
echo utf8_decode(urldecode("Ant%C3%B4nio+Carlos+Jobim"));
Output: "Antônio Carlos Jobim".
Altri suggerimenti
In realtà, ottieni l'output desiderato, ma non è interpretato come UTF-8. Se questo è su un'applicazione HTTP, è necessario inviare un'intestazione o un meta tag (o entrambi) che direbbe al client di utilizzare UTF-8.
Modificare: per esempio:
// replace text/html with the content type you're using
header('Content-Type: text/html; charset=UTF-8');
quando io faccio
<?php
echo urldecode("Ant%C3%B4nio+Carlos+Jobim");
?>
Il suo display correttamente nel mio browser come
Antônio Carlos Jobim
Ho testato con XAMPP
Stai anche usando htmlenteties
Prima di riecheggiare nella pagina? Quando ho appena testato il tuo codice ha funzionato bene solo con il urldecode("Ant%C3%B4nio+Carlos+Jobim");
parte, ma quando l'ho attraversato htmlentities
Ho ottenuto lo stesso output di te.
Sembra essere un problema con i caratteri UTF-8 e come PHP gestisce il htmlentities
funzione.
Un'altra opzione è:
<?php
$smthing = 'http%3A%2F%2Fmysite.com';
$smthing = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($smthing));
$smthing = html_entity_decode($smthing,null,'UTF-8');
echo $smthing;
?>
L'output diventa: http://mysite.com
Per prima cosa devi decodificare nella funzione Urldecoder "UrldeCoder ()" e quindi utilizzare la funzione decoder UTF "UTF_DECODER ()"