2015-03-21 4 views
2

В PHP, когда я пишуPHP и специальные символы

$string="\thello world\t" 
echo trim($string); 

это выводит hello world. Однако, когда я ввожу ту же строку в поле ввода формы HTML и отправляю сообщение на сервер, поведение изменяется.

echo trim($_POST["string"]; 

Вышеприведенные код выхода \thello world\t

В чем разница?

ответ

1

Это связано с тем, что внутри двойных кавычек \t является escape sequence, который расширяется до символа символа. Однако, когда вы вводите \t в поле ввода, оно выставляется как буквальные символы \t.

В этом примере этот код.

echo trim($_POST["string"]; 

Является аналогом этого кода.

$string='\thello world\t' 
echo trim($string); 

Экранированные последовательности не раскрываются внутри строк, объявленных одинарными кавычками.

Если вам нужна функциональность для расширения escape-последовательностей из отправленной строки, this question предлагает несколько методов.

+0

Итак, любой вход, который поступает от GET или POST, является специальным символом? – Whiteley

+0

@Whiteley Не обязательно, пользователь может отправлять любые произвольные данные, даже если вход не позволяет этого. Однако последовательности Escape не будут расширены. Если вас беспокоит только то, что пользователь может отправить начальное/конечное пробелы, достаточно «trim». –

+0

в этом случае, обрезка только удаляет символ пробела, а не специальные символы, такие как \ n или \ t, я прав? – Whiteley

Смежные вопросы