PHP - 在div中显示来自mysql文本字段的html

标签 php html mysql

从 mysql 数据库中的文本字段检索 html 标签后,我在显示 html 标签时遇到了一些问题。

我的代码看起来像这样:

<div class='textDiv'><? echo htmlspecialchars_decode(str_replace("\r\n", "<br>", $row["textField"]), ENT_NOQUOTES);?></div>

因此,当mysql中的文本字段只有纯文本时,一切都很好,但是当我在文本中添加链接时,链接标记前后出现换行符,显示的文本变成这样的行:

Some text justified over the div, then a sudden break
text with link to source
then the text continues justified as normal

但是,脚本生成的HTML代码是这样的:

<div class="textDiv">Senior Advisor said in a <a href="test.html">media interview</a> that the overall monetary policy tone is shifting towards...</div>

你们知道为什么会发生这种情况以及如何解决它吗?使文字显示流畅不换行?

最佳答案

当您使用htmlspecialchars_decode时,所有文本的html都会被解码,因此如果您想保留解码功能

1)将链接更改为正常链接的样子,例如:yourwebsite.com/test.html 不要添加标签

2)不要直接回显字符串

$text = htmlspecialchars_decode(str_replace("\r\n", "<br>", $row["textField"]);

3) 然后将变量 $text 传递给代码来检测链接,这里是一个:-

        $reg_exUrl = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';
    if(preg_match($reg_exUrl, $text, $url)) {
    echo preg_replace($reg_exUrl, '<a href="https://'.$url[0].'" rel="nofollow">'.$url[0].'</a>', $text);
    } 
    else 
    {
    echo $text;
    }

您可以更改代码以适应您的需求

关于PHP - 在div中显示来自mysql文本字段的html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367237/

相关文章:

php - 尝试查找和删除文本以修复WP恶意软件时,SSH命令无法正常工作

php - 从数据库获取表名并输出到html表供下载

php - 循环遍历php数组问题

Google Cloud Platform 上的 LAMP 堆栈中 MySQL 密码未知

mysql - 如何将mysql从本地主机迁移到IP地址

php - laravel 获取最后一个相关模型

php - Laravel:在多对多关系中获取不相关的项目

javascript - CSS3 或 JavaScript slider 他们是怎么做到的?

html - 完全加载后播放html5视频

javascript - 焦点不适用于文本区域