php html_entity_decode и htmlspecialchars_decode не работает [дубликат]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

67
задан Peter Mortensen 25 May 2015 в 13:47
поделиться

3 ответа

Для запроса URI используйте urlencode / urldecode ; для чего-либо еще используйте rawurlencode / rawurldecode .

Разница между urlencode и rawurlencode заключается в том, что

  • urlencode кодируется в соответствии с application / x-www-form-urlencoded (пространство кодируется с помощью +), в то время как
  • rawurlencode кодирует согласно Percent-Encoding (пробел кодируется с помощью %20).
121
ответ дан Gumbo 24 August 2018 в 08:24
поделиться

Уловно названный urlencode () и urldecode () .

Однако вам не нужно использовать urldecode() для переменных которые появляются в $_POST и $_GET.

15
ответ дан Oliver Charlesworth 24 August 2018 в 08:24
поделиться

Вот мой прецедент, который требует исключительного количества кодирования. Может быть, вы думаете, что это надуло, но мы это делаем на производстве. Совсем наоборот, это охватывает все типы кодирования, поэтому я отправляю в качестве учебника.

Использование описания случая

Кто-то только что купил предоплаченную подарочную карту («токен») на нашем сайте , У токенов есть соответствующие URL-адреса, чтобы их выкупить. Этот клиент хочет отправить его кому-то другому.

PHP code

// 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>';

Примечание: вышесказанное предполагает, что вы выводите на text/html ссылку на mailto, которая позволяет им это делать.

документ. Если тип выходного носителя - text/json, просто используйте $retval['url'] = $mailToUri;, потому что выходное кодирование обрабатывается с помощью json_encode().

Тестовый случай

  1. Запустите код на тестовом сайте PHP ( есть канонический, который я должен здесь упомянуть? )
  2. Нажмите ссылку
  3. Отправить электронное письмо
  4. Получить электронную почту
  5. Нажмите эту ссылку

Вы должны увидеть:

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

И, конечно, это представление JSON $token выше.

3
ответ дан William Entriken 24 August 2018 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: