按原样回显php标识符,即语法


Echo php identifiers as they are i.e. syntactically!

在我的PHP应用程序中的一个地方,我需要在语法上响应PHP的全局变量,即类似的东西echo "$_POST['submit']";但这行不通。有人能解释一下吗?

实际代码是:echo "<?php if(isset($_POST['submit'])) echo 'value="'. $_POST['{$column['Field']}'] .'"'; ?>";

这是不正确的:

<?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'].'"';
?>

你需要的那个

更新:来自评论

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

这将回显herdoc字符串

之间的所有字符串。

阅读更多关于HEREDOC语法的信息

尝试使用nowdoc

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

这在PHP 5.3中可用,它不会在字符串中插入变量值

回显它只需执行a:

echo $str;

echo htmlentities($str);

当回显包含大量双引号和单引号的复杂内容时,您可能应该使用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'']}''] .''"''; ?>');