如何为PHP动态链接添加命名锚点?含代码调试需求
如何给PHP生成的链接添加命名锚点?
你的问题出在锚点的位置和参数拼接顺序上。URL的规则是:锚点(#xxx)必须放在所有查询参数(?key=val&key2=val2)的后面,而且要确保每个查询参数的键值对是完整的。
看你原来的代码,你把#named-anchor直接拼在了&nationalpage=的后面,这会导致锚点被当成nationalpage参数的值(变成&nationalpage=#named-anchor),而不是真正的页面锚点,自然达不到预期效果。
正确的写法
首先要把所有查询参数拼接完整,再把锚点放在URL的最后:
假设nationalpage的值是你之前生成的1(或者对应一个变量比如$nationalpage),代码应该写成这样:
<?php echo "<a href=\"reviews-mockup2.php?category=$category&keyword=" . $_REQUEST['keyword'] . "&nationalpage=1#named-anchor"; ?>
如果nationalpage是一个变量,比如$nationalpage,就改成:
<?php echo "<a href=\"reviews-mockup2.php?category=$category&keyword=" . $_REQUEST['keyword'] . "&nationalpage=" . $nationalpage . "#named-anchor"; ?>
额外的安全提醒
直接输出$_REQUEST['keyword']和$category存在XSS跨站脚本攻击的风险,建议用htmlspecialchars()对变量进行转义,避免用户输入的恶意代码被执行:
<?php // 先转义变量,处理可能的空值 $category = htmlspecialchars($category ?? '', ENT_QUOTES); $keyword = htmlspecialchars($_REQUEST['keyword'] ?? '', ENT_QUOTES); $nationalpage = htmlspecialchars($nationalpage ?? '1', ENT_QUOTES); echo "<a href=\"reviews-mockup2.php?category=$category&keyword=$keyword&nationalpage=$nationalpage#named-anchor\">链接文本</a>"; ?>
这样生成的URL就是正确的格式:http://test.usfamilyguide.com/reviews-mockup2.php?category=&keyword=&nationalpage=1#named-anchor,锚点会正确指向页面中id="named-anchor"的元素。
内容的提问来源于stack exchange,提问作者bluedimensional
相关产品推荐
相关产品推荐

