2010-08-03 3 views
4

По некоторым причинам, после подачи строки как этот Jack’s Spindle из текста формы в PHP, я получаю:PHP URL Кодирование/Декодирование Довольно Котировки через% u2019 форма месторождения

Jack%u2019s Spindle

Это не что РНР urlencode() будет делать, что бы Jack%92s+Spindle или rawurlencode() = Jack%92s%20Spindle

Таким образом, urldecode() и сырой вариант не работает для декодирования тыс в строке ... Есть ли другая функция для таких строк?

-

Кроме того, Jack’s Spindle бы быть HTML-безопасный способ закодировать выше, но urlencode() и сырье * для этого дает: Jack%26%238217%3Bs+Spindle и Jack%26%238217%3Bs%20Spindle соответственно ...

Где %u2019 приход из? Что он представляет? Как вы вернетесь к этому невинному апострофу?

+0

Подобное кодирование путаницы возникает для '' Surrounded Pretty Quotes'' – ina

ответ

6

Ну, только вы можете сказать нам, откуда это взялось. Откуда вы получаете свой текст и какие преобразования он представляет? Признаюсь, я еще не видел эту стратегию кодирования.

Это очень похоже на то, как Javascript кодирует кодовые единицы UTF-16: \uXXXX, где каждый X представляет шестнадцатеричный символ. Для того, чтобы преобразовать его в HTML-сущностей, вы могли бы сделать:

preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string) 
+0

, что reg ex точно сделал трюк! цитаты фиксированы ... ty: D – ina

2

Регулярное выражение в вызове функции preg_replace должен иметь конечный разделитель, то есть: preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string).

1

У меня была такая проблема.
Когда я отправить переменный в PHP скрипт с помощью JavaScript/AJAX, PHP-показывал% u2019 вместо цитаты и т.д ...
Я решил так:
- в моем яваскрипте сценария, заменив escape(myvar) на encodeURIComponent(myvar) перед отправкой
- в моем файле php, используя $myvar=utf8_decode($_POST['myvar'])

Надежды могут помочь.

Смежные вопросы