Эхо-идентификаторы PHP, как они есть, то есть синтаксически! - PullRequest
1 голос
/ 20 июля 2011

В каком-то месте моего PHP-приложения мне нужно отобразить синтаксически глобальную переменную PHP, т.е. что-то в этом роде echo "$_POST['submit']"; Но это не работает. Кто-нибудь может пролить свет на это?

Фактический фрагмент кода: echo "<?php if(isset($_POST['submit'])) echo 'value="'. $_POST['{$column['Field']}'] .'"'; ?>";

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

Это не правильно:

<?php if(isset($_POST['submit'])) echo 'value="'. $_POST['{$column['Field']}']

переключиться на это:

<?php 
 if(isset($_POST['submit'])) 
 echo 'value="'. $_POST[$column['Field']];

// or 
 echo 'value="'. $_POST['submit'].'"';

?>

, какой вам нужен

ОБНОВЛЕНИЕ: из комментария.

* * 1010

это отобразит всю строку между строкой heredoc

Подробнее о синтаксисе HEREDOC

1 голос
/ 20 июля 2011

При отображении чего-то сложного с множеством двойных и одинарных кавычек вам, вероятно, следует использовать синтаксис nowdoc: http://php.net/manual/en/language.types.string.php

Попробуйте что-то вроде:

echo <<<'STRING'
<?php if(isset($_POST['submit'])) echo 'value="'. $_POST['{$column['Field']}'] .'"'; ?>
STRING;

Вы также можете сделать это с одиночнымкавычки, но вам нужно экранировать все одинарные кавычки в вашей строке, например:

echo '<?php if(isset($_POST[\'submit\'])) echo \'value="\'. $_POST[\'{$column[\'Field\']}\'] .\'"\'; ?>';

Наконец , если вы выводите в HTML, вам нужно использовать htmlspecialchars() для преобразования< до &lt;, от '>' до &gt; и от & до &amp;.

echo htmlspecialchars(<<<'STRING'
<?php if(isset($_POST['submit'])) echo 'value="'. $_POST['{$column['Field']}'] .'"'; ?>
STRING
);

И:

echo htmlspecialchars('<?php if(isset($_POST[\'submit\'])) echo \'value="\'. $_POST[\'{$column[\'Field\']}\'] .\'"\'; ?>');
1 голос
/ 20 июля 2011

Попробуйте использовать nowdoc

$str = <<<'EOD'
<?php if(isset($_POST['submit'])) echo 'value="'. $_POST['{$column['Field']}'] .'"'; ?>
EOD;

Это доступно из PHP 5.3 и не интерполирует в строку значение переменной

, чтобы вывести его просто:

echo $str;

или

echo htmlentities($str);
...