我试图在我的网站上存储和检索嵌入式YouTube视频的HTML,但是遇到了麻烦。这是我的代码:
Controller
$html = request('media');
$html = htmlentities($html);
$post = Post::create(array_merge(['media' => $html],request(['title', 'content'])));
Retrieval
{{ html_entity_decode($post->media) }}
重要的事情是,我正在使用Laravel,并且在我的MySQL数据库中,我将此HTML存储为类型text
。那么,我将如何实现呢?检索代码仅显示HTML代码,但不呈现。当我查看源代码时,是因为检索到的HTML像这样
<iframe width="560" height="315" src="https://www.youtube.com/embed/CgsymJy0RJk" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
如何将HTML保存到数据库中,以便对其进行检索并呈现所需的嵌入式视频?
答案 0 :(得分:0)
在控制器上,移除$html = htmlentities($html);
查看:
{!! $post->media !!}
答案 1 :(得分:0)
请勿使用函数htmlentities
更改保存在数据库中的代码:
如PHP manual所述:
htmlentities-将所有适用的字符转换为HTML实体
此外,在将原始HTML保存到数据库中时,请注意 SQL注入。
或者从数据库读取媒体后,只需在控制器中使用html_entity_decode
。