You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PUG的锚点链接中正确添加PHP标签?

解决Pug中锚点链接里PHP标签被转义的问题

这问题我之前做PHP+Pug项目时也踩过坑!Pug默认会对所有插入的文本内容做HTML转义处理,所以你写的<?php ... ?>会被自动转成&lt;?php ... ?&gt;这类实体字符,自然达不到预期效果。下面给你几种最常用的解决办法:

方法1:使用不转义的属性插值 !=

如果是在锚点的href这类属性里插入PHP代码,把原来的属性值写法改成!=开头的不转义插值:

// 错误写法(会被转义)
a(href="<?php echo $pageUrl; ?>") 跳转页面

// 正确写法
a(href!= "<?php echo $pageUrl; ?>") 跳转页面

Pug里的=是转义插值,会把特殊字符转成HTML实体;而!=是不转义插值,会直接输出原始内容,这样PHP标签就能原封不动保留在编译后的HTML里。

方法2:在标签内容中插入PHP(管道符/不转义文本)

如果是锚点的文本内容需要嵌入PHP,有两种方式:

方式A:用管道符|直接输出原始文本

a
  | 欢迎访问 <?php echo $siteName; ?>

管道符后面的内容会被Pug当作原始文本输出,不会做转义处理。

方式B:用!=直接插入不转义内容

a != "欢迎访问 <?php echo $siteName; ?>"

这种写法更简洁,适合短内容的场景。

方法3:使用PHP过滤器(适合大量PHP代码场景)

如果你需要在Pug里插入大量PHP逻辑,可以用Pug的PHP过滤器(需要确保你的编译环境支持,比如使用pug-php插件):

a(href)
  :php
    $userUrl = '/user/' . $_SESSION['user_id'];
    echo $userUrl;

这种方式会把过滤器内的代码直接编译成PHP输出到HTML中。

注意事项

使用不转义输出时,要确保你的PHP代码是可信的,避免引入XSS风险——不过因为PHP是服务器端执行的代码,只要是你自己可控的逻辑,一般不会有问题。

编译后的预期HTML应该是这样的:

<a href="<?php echo $pageUrl; ?>">跳转页面</a>

内容的提问来源于stack exchange,提问作者Eulr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:14:46