PHP 将字符串编码为 HTML

PHP Encode string as HTML

我在下面有这段代码,它来自 Wordpress 核心文件 /wp-admin/includes/class-wp-posts-list-table。php

  printf(
    '<a class="row-title" href="%s" aria-label="%s">%s%s</a>',
    get_edit_post_link( $post->ID ),
    /* translators: %s: post title */
    esc_attr( sprintf( __( '&#8220;%s&#8221; (Edit)' ), $title )),
    $pad,
    $title
  );

在我的例子中,变量 $title 包含 iconfont HTML 即

  <i class="fa fa-heart"></i> 

PHP 代码使网络浏览器将 HTML 字符显示为字符串,而不是我要显示为 HTML 并呈现 Font Awesome图标.

我试过在

中包装 $title
htmlentities()
html_entity_decode()
htmlspecialchars()

有人能帮忙吗

你在哪里使用html_entity_decode?我试过这个:

printf(
    '<a class="row-title" href="%s" aria-label="%s">%s%s</a>',
    get_edit_post_link( $post->ID ),
    /* translators: %s: post title */
    esc_attr( sprintf( __( '&#8220;%s&#8221; (Edit)' ), $title )),
    $pad,
    html_entity_decode($title)
  );

而且似乎有效。

但是更改核心文件是个坏主意。您可以尝试编写(或找到)一些允许将图标添加到特定 post 标题但不是所有 post 并且不更改原始文件的插件。