4

我想插入一些编程代码以及教程站点之类的描述。

这是 HTML 代码的示例代码:

 $code = "
 <p>This is introduction to HTML </p>

  [code]
<html> 
<head>
    <title>This is sample descriptions</title>
</head>
<body>
    <form method='post' action='index.php'>
        <input type='text' name='username' value=''>
        <input type='password' name='password' value=''>
        <input type='submit' name='submit' value='Submit'>
    </form> 
</body> 
</html>

 [/code]
   <p> This is sample for PHP </p>
  [code]
  <?php
      echo "Hi, This is PHP";
  ?
  [/code]
  ";

   $code = mysql_real_escape_string($code);
   mysql_query("INSERT INTO tutorials SET tutorial='$code'");

为了显示我正在从数据库中检索内容并使用htmlspecialchars类似,

   echo htmlspecialchars($code);

为了突出显示代码,我正在使用google-code-prettify,这要求代码介于pre标记和prettyprint类之间,

    <pre class='prettyprint'>
    echo htmlspecialchars($code);
</pre>

哪里有标签,[code]并被[/code]替换为 <pre class='prettyprint'>";</pre>喜欢,

 $code = str_replace("[code]", "<pre class='prettyprint'>", $code);
 $code = str_replace("[/code]", "</pre>", $code);

当我回声时,

echo htmlspecialchars($code);

仅显示纯文本,如下所示:

 <html> <head> <title>This is sample descriptions</title> </head> <body> <form      method='post' action='index.php'> <input type='text' name='username' value=''> <input type='password' name='password' value=''> <input type='submit' name='submit' value='Submit'> </form> </body> </html> </pre> <h5> 2. This is sample code for paragraph </h5> <pre class='prettyprint'> <html> <head> <title>This is sample
4

2 回答 2

1

您在完成替换htmlspecialchars <pre>调用,因此标签也被转义(并且不会呈现为 HTML)。颠倒顺序应该可以解决问题:

$code = htmlspecialchars($code);
$code = str_replace("[code]", "<pre class='prettyprint'>", $code);
$code = str_replace("[/code]", "</pre>", $code);
echo $code;

此外,请查看highlight_string以突出显示源代码。

于 2014-08-23T21:46:22.680 回答
0

您的代码中也有<pre class='prettyprint'>and</pre>语句。这可能会使代码无法按预期工作。

您可以尝试将代码中的and分别更改为<and 。>&lt;&gt;

于 2013-08-23T14:03:22.450 回答