我在PHP中有这一行:
function remove_dangerous_chars($src) {
$list = array( '$', '\', '"', '\', '_REQUEST', '_GET', '_POST', '_COOKIE', '_FILES', '_SERVER', '_ENV', 'GLOBALS', '_SESSION', 'toupper' );
当我运行它时,我收到错误:
解析错误:语法错误意外T_CONSTANT_ENCAPSED_STRING,期待')'
答案 0 :(得分:3)
你需要在数组中转义字符反斜杠 -
$list = array( '$', '\\', '"', '_REQUEST', '_GET', '_POST', '_COOKIE', '_FILES', '_SERVER', '_ENV', 'GLOBALS', '_SESSION', 'toupper' );
你只需要在数组中使用反斜杠一次。
答案 1 :(得分:2)
这是因为您意外地转义了单引号,因此解析器将引用解释为文字字符,从而导致代码中的错误。
..., '\', ...
↑
反斜杠是一个转义字符。它会导致下一个字符被解释为文字字符。因此反斜杠后面的引号不会结束字符串,它被解释为文字单引号。这会导致语法错误。
为了修复错误,你必须转义反斜杠本身,因此它不再是转义字符,而是一个字面反斜杠:
..., '\\', ...
第一个反斜杠导致第二个反斜杠按字面解释。
$list = array('$', '\\', '"', '_REQUEST', '_GET', '_POST', '_COOKIE', '_FILES', '_SERVER', '_ENV', 'GLOBALS', '_SESSION', 'toupper');