- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
function string_cleaner($data, array $opts) //1: Массив или строка, 2: Только массив
{
if (empty($opts))
{
$opts['null_byte'] = TRUE;
}
$null_byte = ($opts['null_byte'] == 'off')
? FALSE
: TRUE;
$opts_allowed = ['trim', 'htmlspecialchars', 'strip_tags', 'addslashes', 'htmlentities'];
$opts = array_intersect_key($opts, array_flip($opts_allowed));
if(is_array($data))
{
foreach($data as $key => &$value)
{
if(is_array($value))
{
string_cleaner($value, $opts);
}
if ($null_byte)
{
$value = str_replace(chr(0), '', $value);
}
if(is_array($opts))
{
foreach($opts as $clear_func => $clear_func_params)
{
$value = (!$clear_func_params) ? $clear_func($value) : $clear_func($value, $clear_func_params);
}
}
}
}
else
{
if ($null_byte)
{
$data = str_replace(chr(0), '', $data);
}
if(is_array($opts))
{
foreach($opts as $clear_func => $clear_func_params)
{
$data = $value = (!$clear_func_params) ? $clear_func($data) : $clear_func($data, $clear_func_params);
}
}
}
return $data;
}
{...}
$server['get'] = string_cleaner($_GET, ['trim'=>' ', 'htmlentities'=>'', 'strip_tags'=>'', 'addslashes'=>'']);
inho 30.10.2017 18:23 # 0
Fike 30.10.2017 22:20 # 0
Fike 30.10.2017 22:21 # 0
d_fomenok 31.10.2017 22:06 # 0
SemaReal 31.10.2017 22:42 # +3
это еще зачем??
roman-kashitsyn 31.10.2017 22:44 # +3
SemaReal 31.10.2017 22:54 # 0
Или после Go теперь в G вовсе не скриптят?
roman-kashitsyn 31.10.2017 22:59 # 0
в Я примерно тоже самое, за исключением фронтенда
SemaReal 31.10.2017 23:02 # 0
>>For example, see the bindings for: C#, Haskell, Julia, Ruby, Rust, and Scala.
ахахаха, пыха даже тут нету.
Фронт-то на JS преимущественно, это понятно...
d_fomenok 01.11.2017 11:53 # 0
Страуструп нервно курит в сторонке
SemaReal 01.11.2017 13:20 # 0
subaru 31.10.2017 23:03 # 0
SemaReal 31.10.2017 23:06 # 0
Всмысли новые сервисы они на нем не пишут, насколько мне известно
roman-kashitsyn 31.10.2017 23:16 # 0
roman-kashitsyn 01.11.2017 12:07 # 0
vistefan 03.11.2017 11:14 # +5
МЕТУШНЯ!
inkanus-gray 03.11.2017 13:59 # 0
inkanus-gray 03.11.2017 14:05 # 0
Быстрофикс для PHP 7:
https://ideone.com/Y5vifr
vistefan 03.11.2017 14:24 # +3
Это офигенно. Лет пятнадцать копились вопросы: почему из версии в версии в версию приоритет тернарного оператора такой ебанутый; почему оператор сравнения == не транзитивен, любая непустая строка == 0 и == TRUE, но 0 == FALSE; почему куча стандартных функций, от которых в качестве результата мы ожидаем массив, вместо пустого массива возвращают false, который вроде бы == [], но при передаче в foreach дает ворнинг, и приходится городить проверки...
И всегда было оправдание: подумайте сами, сколько кода работает по старым соглашениям, нам нужна обратная совместимость, бла бла бла.
И вот они сменили приоритет, и где? В возможности использовать строку как имя переменной. Это вообще здоровые люди?
inkanus-gray 03.11.2017 14:33 # 0
Если поставить фигурные скобки, то всё работает в любой версии:
https://ideone.com/XUgC3D
inkanus-gray 03.11.2017 14:37 # 0
Придётся обкладываться скобками, чтобы всё работало.
vistefan 03.11.2017 14:37 # 0
inkanus-gray 03.11.2017 14:38 # +1
vistefan 03.11.2017 14:39 # 0
SemaReal 03.11.2017 17:27 # 0
roman-kashitsyn 03.11.2017 17:40 # +1
SemaReal 03.11.2017 17:52 # 0
inkanus-gray 03.11.2017 18:29 # 0
d_fomenok 01.11.2017 12:14 # 0
# $opts['null_byte'] == 'off'
Заставь дурака богу молиться, он и лоб расшибёт.
inho 01.11.2017 18:37 # 0