Анализ и возврат URL-адреса в JSON [дубликат]

Я предпочитаю использовать функцию forEach, которая имеет собственное закрытие с созданием псевдодиапазона:

var funcs = [];

new Array(3).fill(0).forEach(function (_, i) { // creating a range
    funcs[i] = function() {            
        // now i is safely incapsulated 
        console.log("My value: " + i);
    };
});

for (var j = 0; j < 3; j++) {
    funcs[j](); // 0, 1, 2
}

Это выглядит более уродливым, чем диапазоны на других языках, но IMHO менее чудовищным, чем другие решения.

129
задан AbraCadaver 25 May 2016 в 19:38
поделиться

3 ответа

есть способ отключить его?

Да, вам нужно использовать только флаг JSON_UNESCAPED_SLASHES.

! important прочитайте до: https://stackoverflow.com/a/10210367/367456 (знайте, с чем имеете дело - узнайте своего врага)

json_encode($str, JSON_UNESCAPED_SLASHES);

Если у вас нет PHP 5.4 под рукой, выберите одну из многих существующих функций и измените их в соответствии с вашими потребностями, например http://snippets.dzone.com/posts/show/7487 (архивная копия) .

Пример демонстрации

<?php
/*
 * Escaping the reverse-solidus character ("/", slash) is optional in JSON.
 *
 * This can be controlled with the JSON_UNESCAPED_SLASHES flag constant in PHP.
 *
 * @link http://stackoverflow.com/a/10210433/367456
 */    

$url = 'http://www.example.com/';

echo json_encode($url), "\n";

echo json_encode($url, JSON_UNESCAPED_SLASHES), "\n";

Пример:

"http:\/\/www.example.com\/"
"http://www.example.com/"
210
ответ дан hakre 24 August 2018 в 05:15
поделиться

Да , но нет - ускорение косой черты - это хорошо . При использовании JSON внутри тегов <script> это необходимо, как </script> где угодно - даже внутри строки - закончит тег скрипта.

В зависимости от того, где используется JSON, это необязательно, но это может быть безопасно игнорируется.

34
ответ дан Community 24 August 2018 в 05:15
поделиться

С другой стороны, у меня возникла проблема с PHPUNIT, утверждающие, что urls содержался или был равен URL-адресу json_encoded -

my expected:

http://localhost/api/v1/admin/logs/testLog.log

будет кодироваться в:

http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log

Если вам нужно выполнить сравнение, преобразование URL-адреса с помощью:

addcslashes($url, '/')

разрешено для правильного вывода во время моих сравнений.

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

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