我试图找到一种方法来转义插入到我的数据库中的脚本或标签,同时保留文本格式。然而,我遇到了几个只能解决两者中的一个的问题。
我正在尝试在 $blog['title']
和 $blog['content']
我尝试使用 nl2br()
来保留格式。它可以保留格式,但仍然不会转义 HTML 标记和脚本。
这些是我的代码。 请注意,我正在使用类,其中我的所有函数都在那里,并在我当前的博客页面中实例化了该类。
博客帖子 HTML 块
<?php
if(isset($_GET['id'])){
$selectedBlog = $cakeOrdering->get_data("SELECT blogID, title, content, img, author, dateCreated FROM blogs WHERE blogID = ?", array($_GET['id']));
if(is_array($selectedBlog) || is_object($selectedBlog)){
foreach($selectedBlog as $blog){
?>
<!-- Blog Posts -->
<div class="blog_item">
<div class="blog_img">
<img class="img-fluid" src="../img/blogs/<?php echo $blog['img']; ?>" alt="">
</div>
<div class="blog_text">
<div class="blog_time">
<div class="float-left">
<a href="#"><?php echo $blog['dateCreated']; ?></a>
</div>
<div class="float-right">
<ul class="list_style">
<li><a href="#">By : <?php echo $blog['author']; ?></a></li>
<li><a href="#">category</a></li>
<li><a href="#">Comments: 8</a></li>
</ul>
</div>
</div>
<a href="#"><h4><?php echo $cakeOrdering->escape($blog['title']); ?></h4></a>
<p style="word-wrap: break-word;"><?php echo $cakeOrdering->escape(nl2br($blog['content'])); ?></p>
</div>
</div>
<?php }}} ?>
我在php类中创建了一个名为escape的函数
// Escaping characters
public function escape($string){
echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
如果我使用这个:
$cakeOrdering->escape(nl2br($blog['content']));
但是如果我像这样删除转义函数
nl2br($blog['content']);
答案 0 :(得分:1)
反过来说:
(defmacro keyed [names]
(into {}
(for [n names]
[(keyword n) n])))