解析错误:语法错误,意外T_CONSTANT_ENCAPSED_STRING,期待')'

时间:2014-09-10 21:32:08

标签: php

我在PHP中有这一行:

  function remove_dangerous_chars($src) {
        $list = array( '$', '\', '"', '\', '_REQUEST', '_GET', '_POST', '_COOKIE', '_FILES', '_SERVER', '_ENV', 'GLOBALS', '_SESSION', 'toupper' );

当我运行它时,我收到错误:

  

解析错误:语法错误意外T_CONSTANT_ENCAPSED_STRING,期待')'

2 个答案:

答案 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');