每当我在PHP函数中构建代码并使用PHP变量作为href值时,PHP都会从定位标记中截断参数。
注意:在撰写本文时,我脑子闪了个光,并解决了自己的问题。如果其他人觉得有用,我将在此处提出问题和解决方案。
背景:我正在使用jQuery和Bootstrap的modal.js插件构建一个准巨型菜单。一切正常,菜单按钮触发模式,显示我为megamenu创建的HTML代码以及该菜单上的十二个或更多页面链接。页面链接工作正常。
然后,我决定在页面链接中添加工具提示,以向访问者简要介绍每个页面。我是通过将CLASS和TITLE属性添加到链接的锚标记来实现的。这部分也很好用。
然后,为清理链接,我将TITLE属性的文本放入PHP变量中。那也很好。
当时的一个运营锚链接如下所示:
<a href="cleanscans.php" class="tooltip-test" title="<?php echo($TTClSc); ?>">Cleaning Scans</a>
最后,我想使添加链接到列表更加容易,所以我构建了一个PHP函数来构建上面的行,传入两个参数-调用页面的主文件名和链接的文本:
function BuildMenuItem($Pageroot, $MenuText)
该函数运行良好,除该函数总是将href =“”语句的右引号后的所有参数都截断(切掉)之外。换句话说,CLASS和TITLE参数从未将其弄清楚的功能。
这让我发狂,我不知道为什么会这样。我经过了十几次,无法解决,那是我决定不得不来这里寻求帮助的时候。
当我开始写这篇文章时,我发现锚参数不需要以任何特定顺序提供,因此如果函数将href后面的所有内容都截断,为什么不放 class 和标题之前?
所以我尝试了,瞧!有效!我的功能现在很好地按需提供了新的菜单链接,并带有工具提示。像这样:
<?php echo BuildMenuItem("procedures", "Procedures") ?>
<?php echo BuildMenuItem("pdftools", "PDF Tools") ?>
唯一需要注意的是,我必须用连接到主文件名的$ TT来命名工具提示文本变量。
这是该函数输出的示例,来自Procedures调用(上面的第一行):
<a class='tooltip-test' title="$TTprocedures" href="http://www.mywebsitename.com/procedures.php">Procedures</a>
但是我仍然对为什么会出现此问题感到困惑。生成上述语句的函数将截断HREF之后的所有参数,但如果在前面列出,则它们可以正常工作。
任何线索为何?