<?php
$data = [
(object)array(
'string' => '
CHECK
',
'inQuotes' => true,
),
(object)array(
'string' => '1 + 3 . \'-\'. 4 . \'=\' . 0',
'inQuotes' => false,
),
(object)array(
'string' => '
',
'inQuotes' => true,
),
(object)array(
'string' => '<h2>',
'inQuotes' => true,
),
(object)array(
'string' => 'Olololo',
'inQuotes' => true,
),
(object)array(
'string' => '</h2>',
'inQuotes' => true,
),
(object)array(
'string' => '
',
'inQuotes' => true,
),
(object)array(
'string' => '<h2>',
'inQuotes' => true,
),
(object)array(
'string' => 'Number is, ',
'inQuotes' => true,
),
(object)array(
'string' => 'count()',
'inQuotes' => false,
),
(object)array(
'string' => '</h2>',
'inQuotes' => true,
),
(object)array(
'string' => '
',
'inQuotes' => true,
),
'
if (rand(0,1)){',
(object)array(
'string' => '
lol
',
'inQuotes' => true,
),
'
}',
];
$printecho = function($d=null){
static $parameters=[];
if(!is_null($d)){
if($d->inQuotes){
$val="'".addcslashes($d->string,'\\\'')."'";
} else {
$val = $d->string;
}
// пытаемся склеить крайние строковые значения
$count=0;
if(count($parameters)>0) {
$x = $parameters[count($parameters) - 1];
$x = preg_replace('~^(.{' . (strlen($x) - 1) . '})\'\'~s', '\1', $x . $val, -1, $count);
}
if($count>0){
$parameters[count($parameters)-1]=$x;
} else {
$parameters[] = $val;
}
} else if(!empty($parameters)){
echo 'echo '.implode(', ',$parameters).';';
$parameters=[];
}
};
foreach($data as $d){
if(is_object($d)){
$printecho($d);
} else {
$printecho();
echo $d;
}
}
$printecho();
echo '
CHECK
', 1 + 3 . '-'. 4 . '=' . 0, '
<h2>Olololo</h2>
<h2>Number is, ', count(), '</h2>
';
if (rand(0,1)){echo '
lol
';
}
const n = new FormData(this);
// зачем тут был нужен t ?
// правила - имя поля: ['правило', параметры...]
const rules={
'_': ['nempy'], // по умолчанию будем проверять на непустое значение
'frominternet': ['or','fromcomputer','frominternet'], // здесь имена полей, в которых обязано быть хотя бы одно непустое значение
'fromcomputer': ['or','fromcomputer','frominternet']
}
for (let [e, a] of n.entries()) {
let rule=rules[e]||rules['_'];
if(rule[0]==='nempty'){
if (n.get(e) === ""){
anim(e);
}
} else if (rule[0]==='or') {
let found=false;
for(let i=1;i<rule.length;i++){
if (n.get(rule[i]) !== "") found=true;
}
if(!found){
anim(e);
}
}
}