编辑:对于其他人阅读,这已得到解决。锚ID中不允许使用%20。
通常使用锚ID的原因,我正在将文本链接列表作为标题,这些标题只是在页面的下方链接到每个相关的文本块。
代码有效,没有错误等,但我无法成功编码URL
如果没有rawurlencode()
链接可以很好地工作,但是它们有我需要管理的空间(也不会验证)。
我只用urlencode()
尝试了,但这很好用,但是它增加了+而不是%20,并且我尽可能避免读取+(可能这不准确,但不能解释为什么{{1} }不起作用)。
基本代码:
rawurlencode()
在源代码中,我可以看到// The array of list titles
$aryList = array( "1. Communications", "2. Definitions and Conditions");
// Loop to output each list title as a link
foreach ($aryList as $strListValue)
{
echo "<a href='#".rawurlencode($strListValue)."'>$strListValue</a>";
}
// The content with the list title as the link ID (destination)
echo "<a id='".rawurlencode($aryList[0])."'>".$aryList[0]."</a>";
echo "The text is about Communications.";
用%20替换空格,尽管浏览器地址栏中的URL没有%20且带有空格。单击链接不会执行任何操作。
使用rawurlencode()
时的源代码:
rawurlencode()
浏览器是Iceweasel 17.0.9 FWIW。
修改
从事物 durrrutti 测试说,当我// The list title links
<a href='#1.%20Communications'>1. Communications</a>
<a href='#2.%20Definitions%20and%20Conditions'>2. Definitions and Conditions</a>
// The list IDs (destination)
<a id='1.%20Communications'>1. Communications</a>
<a id='2.%20Definitions%20and%20Conditions'>2. Definitions and Conditions</a>
只有锚时,它完全正常,而不是ID。
然而,这仍然留下ID中的空白问题。
源代码现在只有锚点编码而不是ID:
rawurlencode()
答案 0 :(得分:2)
元素ID不能以字母字符开头,即A-Z和a-z。我认为这是你的问题。
更新:此外,ID不能包含百分号。