在这里遇到了一个奇怪的人,也许一些更资深的人可以帮助我得出关于到底发生了什么的结论(已经有一个解决方法,但想知道如何解决这个问题,因为它似乎会影响其他人事物)
所以我有一行代码可以检测 CLI 字符串(基于 type[0]),然后继续将 CLI 参数转换并加载到 GET 参数中。
parse_str(implode("&", array_slice($payload['args'], 1)), $_GET);
效果很好,您可以通过创建文件并发出类似的东西来测试它
php - f test.php -- foo=bar bar=baz
使用上面的行和文件的内容只是一个print_r($_GET);
好吧,当您尝试将其用作 filter_input 我注意到但无法弄清楚原因时,它会变得很奇怪
$filter = filter_input_array(INPUT_GET, [
'email' => FILTER_VALIDATE_EMAIL,
]);
print_r($filter); //empty
看起来filter_input_array一般来说,尝试在 GET 请求上添加任何东西都被放弃了,例如
http://localhost?request=foo
$_GET['email'] = 'Someguy@somplace.com';
//print_r($_GET); // check
print_r(filter_input_array(INPUT_GET, [
'email' => FILTER_VALIDATE_EMAIL,
'request' => FILTER_SANITIZE_ENCODED,
])):
出于未知原因,什么有效的是
$filter = filter_var_array($_GET, [
'email' => FILTER_VALIDATE_EMAIL,
]);
对我来说几乎没有意义=(
我想相信我们的 GET 不知何故没有注册到全球范围内,但我不知道为什么......
我正在为 Saucy 运行 PHP 5.5.8,欢迎输入