Доделываю сайт на modx - там есть особая конструкция, которая эмулирует if в шаблоне.
У меня не получилось заставить ее работать и я полез в код.
Внутри есть примерно следующая конструкция(упростил для понимания)
$opers = explode(":is:", "8:is:8");
return $opers[0] == $opers[1];
Проблема в том, что var_dump($oper) возвращает следующее:
array(2) {
[0]=>
string(14) "8"
[1]=>
string(1) "8"
}
и соответственно хоть оба элемента массива и равны 8, но сравнение показывает что это не так.
Почему после explode в результате получается разная длина строк(string(14) и string(1))? И как сделать правильно?
Спасибо!
UPD.
Проблема видимо проблема в разбиваемой переменной.
Подскажите, куда копать, это неверная кодировка или что?
var_dump($is);
string(20) "8:ieq:8"
var_dump(explode(":ieq:",$is));
array(2) {
[0]=>
string(14) "8"
[1]=>
string(1) "8"
}
Я вообще перестал что-либо понимать.
var_dump(bin2hex($is));
string(40) "5b2b6e6f6d696e6174696f6e2b5d3a6965713a38"
var_dump($is);
string(20) "8:ieq:8"
при этом сайт
string-functions.com/hex-string.aspx расшифровывает строку как
[+nomination+]:ieq:8
В шаблоне я как-раз и делаю [[if? &is=`[+nomination+]:ieq:8` &then=` selected="selected"`]]
Как бинарное представление переменной может показывать одно, а echo другое?