PHP 对嵌入式 HTML 标记中的 URL 做奇怪的事情


PHP Doing Strange Things with URLs in Embedded HTML Tags

我在 PHP/HTML 页面上的 for 循环的每次迭代开始时生成一些 URL,如下所示:

if ($chart_track->positionchange == 0) {
    $position_change_image = bloginfo('template_directory') . "/images/equal.png";
}
else if ($chart_track->positionchange > 0) {
    $position_change_image = bloginfo('template_directory') . "/images/up.png";
}
else {
    $position_change_image = bloginfo('template_directory') . "/images/down.png";
}

然后,我将 $position_change_image 回显到 img 标签的 src 属性中,如下所示:

<img src="<?php echo $position_change_image; ?>" class="position-image">

这将创建一个断开的链接,并以纯文本形式输出 URL 的基(template_directory部分)。在检查img src时,它只有最后一部分,即/images/up.png。我尝试将$position_change_image包装在esc_url函数中,但这也不起作用。当我在其他地方回显$position_change_image的实际值时,它是完整的URL。为什么以上帝的名义被分解并输出成这样?

那是因为你调用回声两次,因为bloginfo自动回声!

请改用get_bloginfo .

Bloginfo Docs:

显示有关站点的信息,主要从 您在用户个人资料和常规设置中提供的信息 WordPress管理屏幕。它可以在任何地方使用 模板文件。这始终会将结果打印到浏览器。如果您需要 在 PHP 中使用的值使用 get_bloginfo()。