2013-04-26 2 views
11

Как поместить PHP-код в строку?Ввод PHP-кода в строку

$phpCode = '<? if($condtion){ ?>'; 

По какой-то причине, когда я делаю это и эхо из кода, я не получаю открытие PHP тег, <?.

Я что-то упустил? Есть ли лучший или более правильный способ сделать это? В настоящее время я смотрю на PHP docs on strings, но я хотел бы получить ваши отзывы.

Редактировать: Причина, почему я использую apsotrophes ('), а не цитаты ("), потому что я не хочу код, чтобы заполнить значение для условия. Я хочу, чтобы это звучало как есть.

+1

Вы эхом отдаете код в HTML-вывод? Если это так, он интерпретируется как тег и требует экранирования, чтобы появиться на экране. – grossvogel

+0

Вы просто даете выход или также запускаете его? –

+0

Он помещается в файл .php, который будет запущен позднее. –

ответ

12

Использование htmlspecialchars():

$phpCode = '<? if($condtion){ ?>'; 
echo htmlspecialchars($phpCode); 
+3

Должно ли 'htmlspecialchars()' быть достаточно экранированным? [Избегание всех объектов незначительно.] (Http://stackoverflow.com/questions/46483/htmlentities-vs-htmlspecialchars) – grossvogel

+1

Достаточно честный. Ответ обновлен. –

+0

Спасибо! Кажется, что это сработало :) Но поскольку вывод будет открытым текстом, я устанавливаю свои переменные как таковые: '$ phpCode = htmlspecialchars ('');' –

1

попробовать эти $str= htmlentities('<?php //***code***// ?>');

-1

Eval php documentation

Eval() Используйте, если вы хотите запустить код в строке.

Пример

$str = "Hello "; 
eval('$str .= "World"'); 

echo $str; 
/* Output: Hello World */ 
+0

Могу ли я спросить, почему? –

+0

Я не думаю, что это то, что ОП просит –

+1

OP говорит в комментариях: «Он помещается в файл .php, который будет запущен позднее». Что возможно с 'eval()'. –

0

Вы можете также использовать HTML-сущности.

При замене только открывающей квадратной скобки в PHP, остальные будут рассмотрены строками, когда анализируются с эхом:

<?php 
    //&lt; is the HTML entity for '<' (without quotes). 
    $str = '&lt;?php yourstring ?>'; 
    echo $str; 
?> 

Источника HTML Entities

0

Вы можете вывести PHP-код в виде текста следующим образом

$phpCode = '<? if($condtion){ ?>'; 
echo "<pre>"; 
echo htmlspecialchars($phpCode); 
echo "</pre>"; 
0

Там уже несколько ответов на это, но только, чтобы добавить мой $ 0,02 ...

Этот код:

<?php 
    $test = '<?php echo "hello world!"; ?>'; 
    echo $test; 
?> 

Создает пустой белый экран в браузере, но при просмотре источника вы увидите этот вывод:

<?php echo "hello world!"; ?> 

Это связано с тем, как браузер представляет собой ваш PHP-код. Браузеры не предназначены для рендеринга PHP-кода, а скорее для разметки HTML. Если вы повторяете код, потому что вы проверяете, что будет написано в вашем файле, просто посмотрите источник, чтобы проверить, что выводится, то, что вы хотите записать в файл. Вы не увидите его в самом браузере, потому что он не знает, как отобразить тег ?php, не говоря уже о том, что делать с атрибутом echo.

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

Другим вариантом является запуск сценария из командной строки. Он не будет пытаться сделать ваш вывод и вместо этого просто выплюнуть его дословно.

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