2011-05-20 118 views
1

我得到的代碼PHP格式化字符串EOD

$confirm = "if (!confirm('".Module::t("Approve") . "?')) return false;"; 

$js_approve =<<< EOD 
function() { 
    $confirm 
    var url = $(this).attr('href'); 
    $.post(url, function(response) { 
     alert(response); 
    }); 
    return false; 
} 
EOD; 

是有可能轉換爲如下代碼

$js_approve =<<< EOD 
    function() { 
     "if (!confirm('".Module::t("Approve") . "?')) return false;"; 
     var url = $(this).attr('href'); 
     $.post(url, function(response) { 
      alert(response); 
     }); 
     return false; 
    } 
    EOD; 

什麼想法?

+0

你的意思是你想縮進它? – 2011-05-20 12:02:10

+0

[HEREDOC干擾代碼縮進]的可能重複(http://stackoverflow.com/questions/2305869/heredoc-interfering-with-code-indentation) – 2011-05-20 12:02:39

回答

2

除此之外,你不能縮進,你也不能在此線

"if (!confirm('".Module::t("Approve") . "?')) return false;"; 

內定界符。

0

爲了防止從PHP解析文本使用nowdoc語法(自PHP 5.3.0)

+1

你的意思是nowdoc? – 2011-05-20 12:14:58

+0

是的,謝謝:) – sitios 2011-05-20 12:21:24

+0

我讀過它,但看不到它如何幫助我運行功能。只有變量 – kusanagi 2011-05-20 12:35:26

0

從這個位在PHP文檔:

需要注意的是,關閉標識符的行必須不包含其他字符,除了可能是分號(;)。這意味着特別是標識符可能不會縮進,並且在分號之前或之後可能沒有任何空格或製表符。認識到關閉標識符之前的第一個字符必須是由本地操作系統定義的換行符也很重要。在UNIX系統上這是\ n,包括Mac OS X.結束分隔符(可能後跟一個分號)後面還必須跟一個換行符。

它說標識符可能不會縮進。我喜歡保持縮進清晰,並且可以像往常一樣繼續進行,但唯一需要注意的是結束EOD;之前的其他字符(即它必須有一個在換行符之前)。除此之外,一切都會按照您期望的方式工作。

以你的代碼爲例:

 
    $js_approve =<<< EOD 
    function() { 
     "if (!confirm('".Module::t("Approve") . "?')) return false;"; 
     var url = $(this).attr('href'); 
     $.post(url, function(response) { 
      alert(response); 
     }); 
     return false; 
    } 
EOD; 

會做工精細

+0

這是行不通的。模塊::噸(「批准」)不運行 – kusanagi 2011-05-20 12:30:19

+0

啊,我的道歉。從經驗上講,這種東西適合我,儘管我從來沒有嘗試過使用對象。也許嘗試用'{Module :: t(「Approve」)}'替換'「.Module :: t(」Approve「)。」',儘管這未經測試。 – Bojangles 2011-05-20 12:55:41