2013-12-17 50 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

你一直在ically發現一個邊緣案例string interpolation。雖然字母數字數組的鍵需要PHP被引用,在雙引號字符串他們需要加引號

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

字符串解析遵循自己的規則。一般來說,你不能在一個字符串中放置隨機的PHP代碼並讓它執行。

+1

最好的辦法做到這一點 – 2013-12-17 17:59:50

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「我的名字是$姓氏$姓氏」; 沒有遇到錯誤 – superpuccio