2015-11-19 3 views
0

Я сделал этот кусок кода:Попытка preg_match

preg_match('/[\"\'><\/\\\]/', $foo)) 

Дело в том, что я не совсем уверен, если это только смотреть на следующие специальные символы или есть STH я пропустил?

< > " '/\ 

В том же случае, но для входов HTML, это правильно?

<input ... pattern="[^<>/\x5C;'\x22]+" /> 

Спасибо за ответ.

+0

В чем проблема с этим? Какие тестовые примеры вы использовали и какие из них не работают? – mikeb

+0

у вас есть дополнительная обратная косая черта, эта строка регулярных выражений должна соответствовать каждому из символов, которые вы после: '/ ([\" \ '><\/\\])/' –

+0

Чтобы сделать их идентичными (после компиляции двигателя это) Я думаю, что это будет 'preg_match ('/ [" \'><\/\\\]/', $ foo)) 'и' ' – sln

ответ

1

Если вы хотите, чтобы проверить, если эти символы присутствуют, this should work:

if (preg_match('/["\'><\/\\]/', $foo))) { 
    ... 
} 

Соответствующий шаблон HTML для запретить эти символы would look like this:

<input pattern="[^&quot;'></\\]*"/> 

Если вы пытаетесь сопоставьте эти символы с понятием безопасного ввода пользователя для вставки в базу данных или для отображения HTML, вы делаете это совершенно неправильно. Отъезд strip_tags(), filter_var() и подготовленные заявления.