2014-09-10 4 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

Ваш вопрос не установлен, поэтому нам придется угадать, что вы имели в виду. Вот несколько попыток: _Как выполнить базовую отладку? _Where, я могу узнать о синтаксисе PHP? Не стесняйтесь редактировать те или иные вопросы в теле сообщения. –

+0

В коде, который вы отправили, отсутствует закрывающая скобка. Кроме того, он ничего не делает с вводом. Можете ли вы предоставить немного больше контекста? – htxryan

+1

Вместо того, чтобы предоставить вам решение для копирования пасты, я предлагаю вам ** изучить ** синтаксис языка. 2 вопроса о SO, и вы получили downvotes, оба из которых касаются синтаксиса. –

ответ

3

Вам нужно побег символ, обратная косая черта, в массиве -

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

И вам нужно только один раз обратный слэш в массиве.

+0

Не нужно скрывать '' ' – AbraCadaver

+0

Правда, просто маленький пояс и подтяжки :) –

+0

Кроме того,« \ »появляется дважды в массиве. – htxryan

2

Это потому, что вы случайно избежали одиночной кавычки, поэтому синтаксический анализатор интерпретировал цитату как буквенный символ, вызывая ошибку в вашем коде.

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

Обратная косая черта - это символ побега. Это приводит к тому, что следующий символ интерпретируется как буквальный символ. Таким образом, цитата прямо за обратной косой чертой не заканчивает строку, она интерпретируется как буквальная одинарная цитата. Это вызывает синтаксическую ошибку.

Для того, чтобы исправить ошибку, вы должны избежать саму обратную косую черту, так что это не маскирующим больше, но в буквальном обратную косую черту:

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

Первый обратный слэш вызывает второй обратной косой черты следует понимать буквально ,

$list = array('$', '\\', '"', '_REQUEST', '_GET', '_POST', '_COOKIE', '_FILES', '_SERVER', '_ENV', 'GLOBALS', '_SESSION', 'toupper'); 
Смежные вопросы