2013-11-21 33 views
0

使用phpmailer函数,必须在双引号变量内格式化电子邮件正在成为一场噩梦。php - 通过include语句将变量设置为html标记

$body = "<div><h1>Hello, ".$foo."!</h1></div>"; 

它是这样的电子邮件,这是广泛的整个身体,并得到难以解决作为我的编辑器(KomodoEdit)不能识别语法错误和这样该标记是一个字符串中定义。

我一直在寻找其他方法来完成此项工作,例如heredoc方法,但虽然看起来更干净,但它仍然不允许使用我的编辑软件的语法检查和标记折叠功能。

我的下一步是尝试这样的:

body.php

<div><h1>Hello, $foo !</h1></div> 

的index.php

error_reporting(E_ALL); 
$foo = 'Frank'; 

$page = include('body.php'); 

$body = <<<EOD 
     $page 
     EOD; 

但这不张贴任何与我甚至没有收到任何错误报告。我已经通过了manual,但我在语法中丢失了某些内容,或者在使用​​时出现逻辑错误。

回答

2

EOD;之前不能有任何空格。向左移动。但是,这仍然不会做你想要的。

ob_start(); 
include('body.php'); 
$page = ob_get_clean(); 

我永远不会调整我的应用程序来满足语法高亮或编辑器的任何其他功能!

+0

'$ body = <<< EOD'? – Plummer

+0

在更新答案之前写下。 – Plummer

+0

heredoc是不相关的(并且不会像这里所预期的那样工作)。 '$ page'将已经包含模板的结果,如果它被修改为执行'<?php echo $ foo?>' – webbiedave

-1

试试这个:

1)的index.php

<?php 
error_reporting(E_ALL); 
$foo = 'Frank'; 

$page = include('body.php'); 

echo <<<EOD 
    $page 
EOD; 
?> 

2)body.php

<?php 
    return "<div><h1>Hello, ".$foo." !</h1></div>"; 
?> 
+1

使用字符串连接正是OP试图*避免*的原因。 – webbiedave

0

更新你的代码

index.p HP

error_reporting(E_ALL); 
$_REQUEST['foo'] = 'Frank'; 

ob_start(); 
include('body.php'); 
$page = ob_get_clean(); 

body.php

"<div><h1>Hello, ".$_REQUEST['foo']." !</h1></div>" 

我们只能在包含文件

+0

仍然在HTML标记上使用字符串连接,这是我试图避免的。 – Plummer

+0

但我喜欢'$ _REQUEST'部分。 – Plummer

+0

$ body = <<< EOT $ page EOT; –

0

访问公共变量(要求等)试试这个:

1)指数.php

<?php 
error_reporting(E_ALL); 
$foo = 'Frank'; 

$page = include('body.php'); 

echo <<<EOD 
    $page 
EOD; 
?> 

2)body。php

<?php 
return <<<RESULT 
    <div><h1>Hello, $foo !</h1></div> 
RESULT; 
?> 
+0

@tPlummer:请找到上面更新的body.php代码字符串连接。我希望这能帮到您。 –