2013-01-16 2 views
1

У меня есть некоторые HTML, охватывающие над EOF:Выведения переменного в Heredoc

$message = <<<EOF 

<p style="font-size: 9px; font-family: Verdana, Helvetica; width: 100%; text-align:left;">Clcik to remove <a href="http://www.mysite.com/remove.php?email=' $email '">clicking here.</a></p> 

EOF; 

Я пытался одиночные кавычки, одинарные кавычки с. избегая двойных кавычек. Кажется, не может найти правильную комбинацию. Любая помощь оценивается.

ТИА

+2

Не удалось воспроизвести http://codepad.org/UHFwVnCN –

+1

Убедитесь, что нет никаких завершающих пробелов на линии для EOF; – cgTag

ответ

2
<?php 

$email="[email protected]"; 

$message = <<<EOF 
<p style="font-size: 9px; font-family: Verdana, Helvetica; width: 100%; text-align:left;">Click to remove <a href="http://www.mysite.com/remove.php?email=$email">clicking here.</a></p> 
EOF; 

echo $message; 

?> 

Однако из вашего примера, я не вижу цели Heredoc. Почему не просто:

<p style="font-size: 9px; font-family: Verdana, Helvetica; width: 100%; text-align:left;">Click to remove <a href="http://www.mysite.com/remove.php?email=<?=$email?>">clicking here.</a></p> 
+1

Некоторые люди (включая меня) ненавидят падение и выход из PHP. – Evert

+0

Почему? Это часть красоты PHP. – showdev

+0

Красота, безусловно, в глазах смотрящего;). Все мои шаблоны выполняются с помощью Twig, и весь мой PHP-код следует за PSR-0 и PSR-1. – Evert

1

Ваш код должен работать, но с Heredocs [что и этот синтаксис на самом деле называется] вы обычно не нужно бежать что-нибудь, или использовать специальные кавычки. В этом примере показан первый пример showdev.

Однако более чистый, более многоразовый синтаксис находится с sprintf().

$email1 = "[email protected]"; 
$email2 = "[email protected]"; 

$message_frame = '<p>Click to remove <a href="http://www.mysite.com/remove.php?email=%s">clicking here.</a></p>'; 

$message .= sprintf($message_frame, $email1); 
$message .= sprintf($message_frame, $email2); 

/* Output: 
<p>Click to remove <a href="http://www.mysite.com/[email protected]">clicking here.</a></p> 
<p>Click to remove <a href="http://www.mysite.com/[email protected]">clicking here.</a></p> 
*/ 

Наконец: большие, встроенные style="" декларации действительно поражение цели CSS.

+0

Nice touch. Чистота и легкость чтения. – showdev

0

Heredoc обычно используется для более длинных строк или, возможно, даже нескольких мыслей, которые могут быть разделены на отдельные строки.

Как tuxradar выразился: «Для того, чтобы позволить людям легко писать большие объемы текста внутри PHP, но без необходимости постоянно бежать вещи, синтаксис Heredoc был разработан»

<?php 
$mystring = <<<EOT 
    This is some PHP text. 
    It is completely free 
    I can use "double quotes" 
    and 'single quotes', 
    plus $variables too, which will 
    be properly converted to their values, 
    you can even type EOT, as long as it 
    is not alone on a line, like this: 
EOT; 
?> 

В вашем случае , было бы разумнее просто откликнуться на вашу строку.

$message = '<p style="font-size: 9px; font-family: Verdana, Helvetica; width: 100%; text-align:left;">Clcik to remove <a href="http://www.mysite.com/remove.php?email=' $email '">clicking here.</a></p>'; 

echo $message; 
Смежные вопросы