在保留有效HTML结构的同时转义MySQL的HTML

时间:2015-09-02 10:18:56

标签: php html mysql html-entities mysql-real-escape-string

我通过基本的HTML编辑器输入了用户内容。我需要验证此内容并将其安全地插入MySQL数据库而不更改其格式。

说我的用户内容是:

$usercontent = "<p>This is my content</p>";

如果我使用:

mysql_real_escape_string($usercontent);

我将其插入数据库:

%3Cp%3EThis+is+my+content%3C%2Fp%3E

但我希望插入文字HTML:

<p>This is my content</p>

是否有一种简单的方法可以将mysql_real_escape_string修改后的内容转换回普通HTML?

我应该知道我正在修改一个已经编写过的网络应用程序而且我没有报酬重写整个事情 - 这是我正在进行的快速调试。因此我确实需要这样做 - 我真的需要在数据库中存储正常的HTML,只是确保我在这之前已经验证了最好的。这也排除了整个实施PDO的应用程序作为一种选择。

我已经做了一些挖掘,我找不到这个问题的答案......至少没有明确说明......关于这个问题的任何内容似乎都被包含在讲座中。假设我读过这些讲座,这个问题有一个简单的简短答案吗?

修改

事实证明,我的奇怪编码在其他地方发生,并不是由mysql_real_escape_string引起的。这使我的问题对我的情况非常独特,可能对任何人都没有多大帮助。但是,urldecode确实解决了我的问题。

2 个答案:

答案 0 :(得分:0)

使用urldecode获取正确的HTML

答案 1 :(得分:0)

  

说我的用户内容是:

$usercontent = "<p>This is my content</p>";
     

如果我使用:

mysql_real_escape_string($usercontent);
     

我将其插入数据库:

%3Cp%3EThis+is+my+content%3C%2Fp%3E

真的?你不应该。如manual中所述:

  

mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,它将反斜杠添加到以下字符: \ x00 \ n \ r \ &#39; &#34; \ x1a < / em>的

你描述的逃避必须在其他地方发生。