簡體   English   中英

如何回顯包含以下內容的字符串<?php ?>

[英]How to echo a string which contains <?php ?>

我想生成一個包含HTML和一些php命令的php頁面。 問題是,當我提交下面的代碼時,我得到了這個輸出

<?php echo '$stfromyearErr  '?><?php echo '$stfrommonthErr  '?><?php echo '$stfromdayErr  '?> <?php echo '$sttoyearErr  '?><?php echo '$sttomonthErr  '?><?php echo '$sttodayErr  '?>

而不是php命令。 我該如何解決?? 謝謝!!

<?php

$page = "<html lang='en'> <head> <meta charset='utf-8' /> </head>
<body><table width='990' border='0' align='center'><tr><td width='54%' colspan='2'>
<span class='error'>&lt?php echo '\$stfromyearErr &nbsp;';?&gt&lt?php echo '\$stfrommonthErr
&nbsp;';?&gt&lt?php echo '\$stfromdayErr &nbsp;';?&gt &lt?php echo '\$sttoyearErr &nbsp;';?
&gt&lt?php echo '\$sttomonthErr &nbsp;';?&gt&lt?php echo '\$sttodayErr &nbsp;';?&gt</span></td>
</tr></table> </body></html>";  
echo $page; 
?>

您正在將PHP標簽標記為&lt;?php ,然后大概在瀏覽器中顯示它。 看起來像在瀏覽器中的PHP的代碼,因為瀏覽器將呈現&lt; 作為<但不是PHP代碼。 這只是一些文字。

PHP不是遞歸可執行的,例如

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

會回聲< ? p等...,而不僅僅是foo

你可以做類似的事情

<?php

    $foo = "<?php echo 'hello world!'; ?>";
    file_put_contents('hello.php', $foo);
?>

沒有任何問題。 只要您生成的文件實際上是由PHP執行的(例如,不要將其命名為“ hello.html”),那么PHP就不會知道(甚至不在乎)該腳本是由其他php代碼生成的。

您將變量封裝在單引號中,因此它們以純文本形式輸出,只需刪除任何echo語句上的逗號即可解決此問題。

<?php echo $stfromyearErr; ?>

當您要輸出PHP代碼(包括標記和語法高亮顯示)時,可以使用函數highlight_string() 這里的文件

<?php
highlight_string("<?php echo '$stfromyearErr  '?><?php echo '$stfrommonthErr  '?><?php echo '$stfromdayErr  '?> <?php echo '$sttoyearErr  '?><?php echo '$sttomonthErr  '?><?php echo '$sttodayErr  '?>");
?>

有兩件事,首先刪除引號:

<?php

$page = "<html lang='en'> <head> <meta charset='utf-8' /> </head>
<body><table width='990' border='1' align='center'><tr><td width='54%' colspan='2'>
<span class='error'>&lt?php echo $stfromyearErr &nbsp;?&gt&lt?php echo $stfrommonthErr
&nbsp;?&gt&lt?php echo $stfromdayErr &nbsp;?&gt &lt?php echo $sttoyearErr &nbsp;?
&gt&lt?php echo $sttomonthErr &nbsp;?&gt&lt?php echo $sttodayErr &nbsp;?&gt</span></td>
</tr></table> </body></html>";
echo $page;

?>

但是,這將為您提供:

<?php echo your_var_1  ?><?php echo your_var_2  ?><?php echo your_var_3 ?> <?php echo your_var_4  ? ><?php echo your_var_5  ?><?php echo your_var_6  ?>

這是因為php標記是多余的:您已經啟動了php,並在php中回顯了這些標記。

如果不可避免,請嘗試按以下方式替換它們:

echo str_replace("&nbsp;?&gt", "", str_replace("&lt?php echo", "", $page));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM