PHP回声内部回声


PHP echo inside echo

我正在尝试使用调用数据库中的HTML/PHP内容

<?php echo $row_content['conteudo']; ?>

当调用该行时,HTML会正确显示,但PHP不会。我相信这是主回声内部回声的原因。

<?php echo "
<h3>Hello</h3>
<?php do { ?>
  <div class='"indios'">
    <a href='"indio.php?id=<?php echo $row_indiosct['id']; ?>'">
      <img src='"galeria/indios/<?php echo $row_indiosct['foto']; ?>'" alt='"<?php echo $row_indiosct['nome']; ?>'" />
      <br /><?php echo $row_indiosct['nome']; ?></a></div>
  <?php } while ($row_indiosct = mysql_fetch_assoc($indiosct)); ?> "
 ?>

这段代码的第一行与第一个代码字段是相同的回声,它不是重复的,它只是为了帮助和了解问题所在。

我已经修复了一些引号,但它在第一个回声的行中出现了错误。

这是我见过的最丑陋的代码。。。

<?php 
echo '
<h3>Hello</h3>';
while ($row_indiosct = mysql_fetch_assoc($indiosct))
{
  echo '
    <div class="indios">
      <a href="indio.php?id='.$row_indiosct['id'].'">
        <img src="galeria/indios/'. $row_indiosct['foto'].'" alt="'.$row_indiosct['nome'].'" />
      <br />'.$row_indiosct['nome'].'</a>
    </div>';
} 
?>

您也可以使用HEREDOC语法。

不要这样做。多行回声,尤其是当你嵌入了引号时,很快就会变成一种痛苦。请使用HEREDOC。

<?php 
echo <<<EOL
<h3>Hello</h3>
...
<div class"indios">
...
EOL;

是的,echo中的PHP将NOT执行。PHP不是一种"递归可执行"语言。如果您正在输出一个字符串,则该字符串中嵌入的任何php代码都不会执行——它将被视为输出的一部分,例如

echo "<?php echo 'foo' ?>"

NOT将仅输出foo。你实际上会得到作为输出

<?php echo 'foo' ?>

您误解了PHP的工作原理。PHP由服务器处理。当它遇到您的脚本时,它会看到以下内容:

<?php echo "some long piece of text that you have told PHP not to look at" ?>

试图将PHP调用嵌套在字符串中的原因是什么?

使用函数eval()在字符串中评估代码php:这篇文章在字符串中执行php代码

<?php
$motto = 'Hello';
$str = '<h1>Welcome</h1><?php echo $motto?><br/>';
eval("?> $str <?php ");

http://codepad.org/ao2PPHN7

如果您需要以字符串形式输出代码缓冲区,也可以使用ob_start()方法:

<?php ob_start(); ?>
<h3>Hello</h3>;
<?php 
  while ($row_indiosct = mysql_fetch_assoc($indiosct)){ ?>
<div class="indios">
  <a href="indio.php?id='<?php echo $row_indiosct['id']'">
    <img src="galeria/indios/'<?php echo $row_indiosct['foto'].'" alt="'.$row_indiosct['nome'].'" />
  <br />'.$row_indiosct['nome'].'</a>
</div>';
<?php } ?>