Как получить определенное значение из строки cookie с помощью PHP или JS? - PullRequest
0 голосов
/ 30 августа 2018

Используемый мной плагин хранит несколько значений в одной строке.

var_dump выглядит так:

{\"strict\":\"0\",\"thirdparty\":\"1\",\"advanced\":\"0\"} 

Мне нужно проверить, является ли, например, «продвинутый» истиной или нет.

Было бы здорово сделать это на php, JS тоже подойдет.

Ответы [ 3 ]

0 голосов
/ 30 августа 2018
<?php
    $input = '{\"strict\":\"0\",\"thirdparty\":\"1\",\"advanced\":\"0\"}';
    $input = str_replace('\', '', $input);
    $input = json_decode($input, true);
    $advanced = empty($input['advanced']);

Если ваша строка содержит брызги, вы должны удалить ее. Здесь с PHP#str_replace после этого вы декодируете строку json, чтобы получить массив ассоциации, и, наконец, проверяете $input['advanced'] с PHP#empty, который возвращает false для значения false, 0, null или '0', в противном случае - true.

0 голосов
/ 30 августа 2018

Проблема решена и работает как задумано. Итак, сначала мы избавляемся от обратной косой черты в строке, которая является значением этого cookie, с помощью stripslashes () , в WordPress используйте wp_unslash () . После json_decode () у нас есть доступ (в данном случае) к трем элементам ( строгое, третье лицо, расширенное ), которые могут иметь значение 0 или 1 . Теперь в var_dump () каждый элемент содержит string (1) перед фактическим значением.

string(1) "1" 
string(1) "0" 

Оператор IF, тем не менее, работает как задумано.

$input = json_decode( stripslashes( $_COOKIE['some-cookie'] ), true );
$thirdparty = $input['thirdparty'];
$advanced = $input ['advanced'];

var_dump( $thirdparty );
echo "<br>";
var_dump( $advanced );
echo "<br>";

if ($thirdparty > 0) {
    echo "allowed";
} else {
    echo "not allowed";
}

echo "<br>";

if ($advanced > 0) {
    echo "allowed";
} else {
    echo "not allowed";
}

Большое спасибо всем ...

0 голосов
/ 30 августа 2018
    $jsIn = '{\"strict\":\"0\",\"thirdparty\":\"1\",\"advanced\":\"0\"} ';
    $jsOut = json_decode(stripslashes($jsIn));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...