Php 如何使浏览器将html标记作为标记而不是文本来读取

Php 如何使浏览器将html标记作为标记而不是文本来读取,php,mysql,Php,Mysql,我有一个表单,您可以在其中插入一些存储在数据库中的文本。然后检索记录并将其包含在html页面中 用户希望在文本中包含href链接,并能够在html页面中使用该链接。 我现在拥有的是: 您可以通过包含Stackoverflow.com的文本区域将文本输入数据库 在数据库中,链接被正确存储(我在字段中使用bindValue) 如果打开html页面,您会看到文本链接:除了Stackoverflow.com clickable,您还会看到Stackoverflow.com 我知道,对你们中的许多人来

我有一个表单,您可以在其中插入一些存储在数据库中的文本。然后检索记录并将其包含在html页面中

用户希望在文本中包含href链接,并能够在html页面中使用该链接。 我现在拥有的是:

  • 您可以通过包含Stackoverflow.com的文本区域将文本输入数据库
  • 在数据库中,链接被正确存储(我在字段中使用bindValue)
  • 如果打开html页面,您会看到文本链接:除了Stackoverflow.com clickable,您还会看到Stackoverflow.com
我知道,对你们中的许多人来说,这可能是一个简单的问题,但对我来说,这是我第一次处理此类请求,我需要一个关于实现结果的最佳方法的想法

这是我的页面的打印屏幕:与数据库中存储的文本完全相同:


非常感谢

这是我为链接所做的

<?php 
 $text = "http://stackoverflow.com";
 echo preg_replace('@((http?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '<a href="$1" target="_blank">$1</a>', $text);
?>

这是php为您提供的保护功能!而且你应该手动操作,并且只针对a标签

当你的用户可以放置任何文本(包括html、css、js)时,他/她会对你的页面造成很大的伤害


解决这一问题的最简单和最好的方法是,不要在文本中添加a标记,而是添加类似bb代码(google)的内容,然后在从数据库中获取的标记与真实标记一起替换。在网页上打印输出时,请使用以下功能

  htmlspecialchars_decode($text);
其中$text是包含描述文本的变量


阅读更多有关它的信息

当您输出链接时,是否将其包含在“”标记之间?
您是否正在执行以下操作same@Gar对我对问题进行了编辑,以包含我看到的内容的打印屏幕。您最有可能使用html_entities函数从数据库打印出结果,这导致了这种行为。我看到了。我上传链接时也会做类似的事情。我已经编辑了这个问题,包括我的页面截图。我只希望看到Truckemotion 1,并且能够使用href访问www.Truckemotion.itI。我已经用htmlspecialchars过滤标记,在PDO查询中绑定值,等等。我不担心安全问题。顺便说一句,唯一可以发布的用户是网站本身的所有者。我不想使用bbcode有很多原因。我的问题不在输入端:它在输出端!