2012-02-02 2 views
0

Для некоторых шаблонов целевых страниц есть такой код:Как эхо переменной в переменную PHP

<?php 
    $Name = 'FOO'; 
    $Title = 'FooTitle'; 
    $Date = '00/00/0000'; 
    $Time = '00:00'; 
    $Time2 = 'AM'; 
    $AttendLink = 'http://linktoattend.html'; 
    $LogoLink = 'http://www.google.com'; 
    $Logo = 'http://www.domain/images/image.jpg'; 
    $LWidth = ''; 
    $LHeight = ''; 
    $Event = '<p class="indent">foo</p>'; 
    $List = '<ul> 
       <li>One</li> 
       <li>Two</li> 
       <li>Three</li> 
       <li><strong class="red">As an added bonus:</strong>foo</li> 
      </ul>'; 
    $Offer = '<p class="indent">foo</p>'; 
    $Presenter = '<p class="indent"><a href="<?php echo $Link ?>">Link!</a></p>'; 
?> 

Для краткости проблемная область эта

<html> 
<head> 
<title><?php echo $Title ?></title> 
</head> 

<body> 
<p><?php echo $Presenter ?></p> 
</body> 
</html> 

, где переменная «$ Presenter "выводит" "как ссылку. Я понимаю, почему это делается, но не как это исправить. Как включить переменную «$ Link» внутри другой переменной «$ Presenter»? Есть ли более семантически правильный способ сделать это?

Спасибо

+0

Как связаны код HTML и PHP? Являются ли они в одном файле? –

+2

Вы должны выполнить * конкатенацию строк *. –

+0

@Pekka да, они в одном файле –

ответ

2

Вы вложенные <?php ?> тегов.

Изменить на:

$Presenter = '<p class="indent"><a href="' . $Link . '">Link!</a></p>'; 

Или

$Presenter = "<p class='indent'><a href='$Link'>Link!</a></p>"; 
+0

Thx Laxman13! Много хороших ответов, я действительно ценю помощь каждого. Удивительное сообщество. Я собираюсь прочитать конкатенацию строк, как предположил Феликс Клинг. –

1

Не возобновлять <?php ?>, когда вы уже внутри <?php ?>. Вместо того, чтобы сцепить переменную в одинарных кавычках:

$Presenter = '<p class="indent"><a href="' . $Link . '">Link!</a></p>'; 

Или, реверс ваши котировки использовать двойной снаружи, и интерполировать переменную внутри. Внутри двойных кавычек встречающиеся переменные будут интерполированы. Если это сложная переменная, как массив $var[1] или объект $obj->property, приложите их в {}, как {$object->property}.

$Presenter = "<p class='indent'><a href='$Link'>Link!</a></p>"; 

Вы действительно должны рассмотреть PHP Strings documentation подробную информацию о том, как они должны быть использованы.

2

Попробуйте

$Presenter = '<p class="indent"><a href="'.$Link.'">Link!</a></p>'; 
1

Я просто рекомендую прочитать о "Printf":

http://www.php.net/manual/en/function.printf.php

Таким образом, вы можете "включать" другая переменная внутри er string.

Таким образом, вы можете иметь свой конфигурационный файл (с содержимым шаблона) и шаблонный файл, где имеет место printf.

1

Я не вижу, где указано определяется переменная $ Link, но я бы сказал, если оно определено перед вашим Invoke шаблон вообще, используйте:

<?php 
    $Presenter = '<p class="indent"><a href="'.$Link.'">Link!</a></p>'; 
?> 

Если он получает определенный между этим определение переменного пула и генерация разметки, сделать хороший старый поиск замещающего/замена:

<?php 
    $Presenter = '<p class="indent"><a href="{{link}}">Link!</a></p>'; 
?> 

, а затем

<html> 
<head> 
<title><?php echo $Title ?></title> 
</head> 

<body> 
<p><?php echo str_replace('{{link}}', $Link, $Presenter); ?></p> 
</body> 
</html> 

примечание: Я предполагаю, что ваша переменная $ Link чиста для инъекции в разметке напрямую

Смежные вопросы