2014-09-10 152 views
-6

我有這條線在PHP中:解析錯誤:語法錯誤,意想不到的T_CONSTANT_ENCAPSED_STRING,預計 ')'

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

當我運行它,我得到的錯誤:

Parse error: syntax error unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')'

+3

你的問題沒有說明,所以我們必須猜測你的意思。以下是一些嘗試:_如何進行基本的調試?_ _哪裏可以學習PHP syntax_?隨意將這些或其他問題編輯到您的帖子正文中。 – 2014-09-10 21:34:44

+0

您發佈的代碼缺少右大括號。此外,它不會對輸入做任何事情。你能提供更多的背景嗎? – htxryan 2014-09-10 21:35:45

+1

而不是給你一個複製粘貼解決方案,我會建議你**學**語言的語法。關於SO的2個問題,你得到了贊成,他們都是關於語法的。 – 2014-09-10 21:35:49

回答

3

您需要在您的陣列中跳過一個字符 - 反斜槓 -

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

而且您只需要數組中的反斜槓一次。

+0

沒有必要逃避''' – AbraCadaver 2014-09-10 21:37:54

+0

真的,只是一個小腰帶和吊帶:) – 2014-09-10 21:39:01

+0

另外,「\」在陣列中出現兩次 – htxryan 2014-09-10 21:39:14

2

這是因爲你意外地逃脫了單引號,所以解析器將引號解釋爲文字字符,導致代碼中出現錯誤。

..., '\', ... 
     ↑ 

反斜槓是一個轉義字符。它導致下一個字符被解釋爲文字字符。因此,反斜槓後面的引號不會結束字符串,它會被解釋爲文字單引號。這會導致語法錯誤。

爲了修正這個錯誤,你必須轉義反斜線本身,所以它不是一個轉義字符了,但一個反斜槓:

..., '\\', ... 

的第一個反斜槓導致第二反斜線按字面解釋。

$list = array('$', '\\', '"', '_REQUEST', '_GET', '_POST', '_COOKIE', '_FILES', '_SERVER', '_ENV', 'GLOBALS', '_SESSION', 'toupper'); 
相關問題