2011-05-20 72 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