如何仅回显带有 "h5" 标签的文本

How to Echo only the text with "h5" tags

我正在尝试回显带有特殊标签“h5”的文本 所以我在 function.php 中添加了这段代码,以回应每个产品

下的简短描述
add_action( 'woocommerce_after_shop_loop_item', 'woo_show_excerpt_shop_page', 5 );
function woo_show_excerpt_shop_page() {
    global $product;
    echo $product->post->post_excerpt;
}

有效,但会回显所有文本

所以我将代码编辑为只提取 h5 标签

  add_action( 'woocommerce_after_shop_loop_item', 'woo_show_excerpt_shop_page', 5 );
    function woo_show_excerpt_shop_page() {
        global $product;
//pick up only h5
$html = '<h5></h5>';
$dom = new DOMDocument();
$dom->loadHTML( $html );
echo $dom->getElementsByTagName("h5")->item(0)->textContent;
    }

现在我的问题是文本根本不显示! 我做错了什么?

记住计算机是愚蠢的,它们不知道你的意思,只知道你说的。所以在这段代码中:

$html = '<h5></h5>';
$dom = new DOMDocument();
$dom->loadHTML( $html );
echo $dom->getElementsByTagName("h5")->item(0)->textContent;

计算机将加载字符串 '<h5></h5>',将其解析为 HTML,然后从中提取 h5 个元素。它绝不会查看任何其他文本。

你要做的是在另一个字符串中寻找h5个元素,所以你需要告诉计算机什么 其他字符串。根据您的第一次尝试,您要查看的字符串是 $product->post->post_excerpt,因此 that 是您在 $html:

中需要的值
global $product;
$html = $product->post->post_excerpt;
$dom = new DOMDocument();
$dom->loadHTML( $html );
echo $dom->getElementsByTagName("h5")->item(0)->textContent;