PHP URL кодирование / декодирование красивые цитаты в поле формы% u2019 - PullRequest
4 голосов
/ 03 августа 2010

По какой-то причине после отправки такой строки Jack’s Spindle из текстовой формы в php я получаю:

Jack%u2019s Spindle

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

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

-

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

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

Ответы [ 3 ]

6 голосов
/ 03 августа 2010

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

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

preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string)
2 голосов
/ 05 сентября 2011

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

1 голос
/ 05 ноября 2012

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

Надеюсь, что это поможет.

...