2013-12-17 2 views
0

Я Php n00b. Я читаю некоторые интернет-учебник, но у меня уже вопрос (очень простой вопрос, я полагаю):Начало PhP: для защиты котировок

Я не понимаю, почему следующий код работает правильно:

<html> 
    <head> 
     <title> My Firts PHP page </title> 
    </head> 
    <body> 
     <?php 
      $userAgent = $_SERVER["HTTP_USER_AGENT"]; 
      echo "<p>This is my awesome User Agent: <b>\"$userAgent\"</b></p>"; 
     ?> 
    </body> 
</html> 

и, вместо этого следующее не работает, хотя я защищаю котировки внутри скобок:

<html> 
    <head> 
     <title> My Firts PHP page </title> 
    </head> 
    <body> 
     <?php 
      echo "<p>This is my awesome User Agent: <b>$_SERVER[\"HTTP_USER_AGENT\"]</b></p>"; 
     ?> 
    </body> 
</html> 

Спасибо заранее.

+0

Что с этим не работает? Вызывает ли ошибка? Не полностью ли он выводится? –

+3

Для чего это стоит, часто лучше не смешивать переменные со строковыми литералами. Это делает ваш код настоящей болью для чтения – Brad

+0

Да, извините: произошла ошибка: «ошибка синтаксиса непредвиденная» (T_ENCAPSED_AND_WHITESPACE) ожидающий идентификатор (T_STRING) или переменная (T_VARIABLE) или номер (T_NUM_STRING) « – superpuccio

ответ

2

У вас есть бас льно обнаружен краевой корпус string interpolation. В то время как буквенно-цифровые ключи массива должны быть указаны в PHP, в двойных кавычках они должны быть неупомянута:

echo "<p>This is my awesome User Agent: <b>$_SERVER[HTTP_USER_AGENT]</b></p>"; 

Строка синтаксического анализа следует своим собственным правилам. В общем, вы не можете отказаться от случайного PHP-кода внутри строки и выполнить ее.

+1

лучший способ сделать это –

1

Неправильное использование котировок escapinng. Смотри и тест thhis:

echo "<p>This is my awesome User Agent: <b>". $_SERVER["HTTP_USER_AGENT"] ."</b></p>"; 
2

Вы могли бы попробовать один из них:

Кудрявая кронштейн позволяет сложные выражения в строках

<html> 
    <head> 
     <title> My Firts PHP page </title> 
    </head> 
    <body> 
     <?php 
      echo "<p>This is my awesome User Agent: <b>{$_SERVER[\"HTTP_USER_AGENT\"]}</b></p>"; 
     ?> 
    </body> 
</html> 

еще лучше, просто использовать PHP для части вы выводящим ,

<html> 
    <head> 
     <title> My Firts PHP page </title> 
    </head> 
    <body> 
     <p>This is my awesome User Agent: <b><?php echo $_SERVER["HTTP_USER_AGENT"]; ?></b></p> 
    </body> 
</html> 
0

Вы можете включить переменные внутри строки, как это:

echo "<p>This is my awesome User Agent: <b>{$_SERVER["HTTP_USER_AGENT"]}</b></p>"; 

Это лучше и чище, если вы использовали

echo "<p>This is my awesome User Agent: <b>". $_SERVER["HTTP_USER_AGENT"] ."</b></p>"; 

Или без одинарных кавычек в массиве ключевых

echo "<p>This is my awesome User Agent: <b>$_SERVER[HTTP_USER_AGENT]</b></p>"; 
+0

Я могу включить переменную в строку также без скобок. Возможно, только если это «простая» переменная. Я могу сделать что-то вроде: echo «Меня зовут $ name $ surname»; без ошибок при встрече – superpuccio