PHP内部回声回声

时间:2013-07-04 19:24:34

标签: php html sql 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)); ?> "
 ?>

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

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

4 个答案:

答案 0 :(得分:4)

这是我见过的一些最丑陋的代码......

<?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语法。

答案 1 :(得分:1)

不要这样做。多线回波,特别是当你有嵌入式报价时,很快就会变成一种痛苦。请改用HEREDOC

<?php 

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

是的,回声中的PHP将 NOT 执行。 PHP不是“递归可执行”语言。如果你输出一个字符串,那么嵌入在该字符串中的任何php代码都不会被执行 - 它将被视为输出的一部分,例如

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

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

<?php echo 'foo' ?>

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

使用函数eval()在字符串中计算代码php:这篇文章Execute PHP code in a string

ON

http://codepad.org/ao2PPHN7

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

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