2013-10-16 18 views
0

下面的代碼不能正常工作,我用斜槓轉義了單引號和雙引號,但是我在firebug中得到錯誤「未終止的字符串文字」。在php中跳轉序列的javascript

echo ' 
function AnimateButtonPress(keyChar) { 
switch (keyChar) {  
    case "\"": 
    case "\'": 
     animateKey(40); 
     break; 

} 
}'; 
+1

那裏沒有PHP,那麼爲什麼還要用'echo'呢? – Phil

+0

感謝它現在的工作,我已經把JavaScript代碼放在一邊php標籤。 – user1866211

回答

0

PHP字符串中的反斜線實際上仍然是一個轉義序列,所以不會在生成的HTML中發出反斜槓。你需要逃避斜線,以及:

echo ' 
function AnimateButtonPress(keyChar) { 
    switch (keyChar) {  
     case "\\"": 
     case "\'": 
      animateKey(40); 
      break; 
    } 
}'; 

你也可以使用一個HEREDOC,甚至更好,一個NOWDOC以減少逃逸的需要。

echo <<<'EOT' 
function AnimateButtonPress(keyChar) { 
    switch (keyChar) {  
     case '"': 
     case "'": 
      animateKey(40); 
      break; 
    } 
} 
EOT; 

另外,如果這只是靜態的HTML,爲什麼發出它與PHP呢?只要將它標記爲<?php ?>以外的標記爲普通標記。

<?php 
// code 
?> 
function AnimateButtonPress(keyChar) { 
    switch (keyChar) {  
     case '"': 
     case "'": 
      animateKey(40); 
      break; 
    } 
} 
<?php 
// more code 
?> 
+0

你知道你的編輯歷史是公開的,對吧? – Phil

+0

@菲爾是的,是的,我有。我很抱歉,如果它看起來像我從你的答案「抄襲」 - 我向你保證我正在同時輸入這個。但是,你知道,[西部最快的槍](http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem)。 –

+0

事情是,你的原始答案沒有切換在案件陳述中的引號(你選擇逃避它們),但你的編輯從這個 – Phil

0

如果必須建立這個字符串在PHP中,我建議HEREDOC

$js = <<<_JS 
function AnimateButtonPress(keyChar) { 
    switch (keyChar) {  
     case '"': 
     case "'": 
      animateKey(40); 
      break; 
     } 
} 
_JS; 
echo $js; 

另外,剛剛輟學PHP的完全

?> 
function AnimateButtonPress(keyChar) { 
    switch (keyChar) {  
     case '"': 
     case "'": 
      animateKey(40); 
      break; 
     } 
} 
<?php 
+0

謝謝,現在它正在工作.. – user1866211

0

您的代碼看起來像這在Javascript中:

function AnimateButtonPress(keyChar) { 
switch (keyChar) {  
    case """: 
    case "'": 
     animateKey(40); 
     break; 
}} 

這是無效的JS。你必須避免兩次引號,一次用於php,一次用於Javascript。

case "\\\"": 
case "\'":