如何正确转义过滤的内容变量?

Posted

技术标签:

【中文标题】如何正确转义过滤的内容变量?【英文标题】:How to properly escape a filtered content variable? 【发布时间】:2019-09-21 01:17:35 【问题描述】:

我正在为我的 Wordpress 主题运行 Theme Checker 插件,并且我有以下代码 sn-ps:

1.仅从帖子内容中获取并显示第一个嵌入视频:

<?php  $content = apply_filters( 'the_content', $post->post_content );

$embeds = get_media_embedded_in_content( $content );
$first_embedded = $embeds[0];
echo $first_embedded;
  ?>

2。从帖子内容中删除任何嵌入的内容:

   <?php 
     $content = apply_filters( 'the_content', $post->post_content );
     $content = preg_replace("/(<iframe[^<]+<\/iframe>)/", '', $content);
     echo $content;
     ?>

我在主题检查器中收到此警告:

WARNING: Found echo $ in the file single.php. Possible data validation issues found. All dynamic data must be correctly escaped for the context where it is rendered.
Line 34: echo $first_embedded;
Line 76: echo $content;

如何正确转义这些变量? 我试过了:

<?php esc_html( $first_embedded); ?>

但它只是打印我嵌入视频的 HTML &lt;iframe&gt;...&lt;/iframe&gt; 代码,就像它是一个简单的文本字符串一样。

如果我在$content 上做同样的事情:

 <?php esc_html( $content); ?>

我是初学者。问题是我需要这两个变量,因为第一个显示视频,以防帖子格式是视频类型,并用第一个嵌入视频替换帖子缩略图。

为了不在帖子内容中显示该视频,还需要第二个函数。

【问题讨论】:

请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。 【参考方案1】:

我发现了一个很好的解决方法,可以在 Theme Checker 上顺利进行,当然在 WordPress 页面上也是如此,即使用 html_entity_decode()

所以我换了:

echo $first_embedded;

用这一行:

echo html_entity_decode( esc_html( $first_embedded ) );

还有:

echo $content;

与:

echo html_entity_decode( esc_html($content) );

html_entity_decode() 函数将 HTML 实体转换为字符,这是我们显示过滤后的帖子内容的代码并在 Envato 或 WP 主题检查器中没有错误所需要的。

【讨论】:

以上是关于如何正确转义过滤的内容变量?的主要内容,如果未能解决你的问题,请参考以下文章

在树枝中使用逃生和生?

vue.js:如何在转义内容中转义变量

如何正确引用批处理文件中的内容?

使用/解析远程变量时如何正确转义单引号? [复制]

如何将过滤后的 jTable 的内容导出到 pdfpTable

JSLint - 带有变量的正则表达式的错误转义