2

编辑:对于其他阅读,这已解决。锚点 ID 中不允许使用 %20。

使用锚 id 的通常原因是,我正在制作一个文本链接列表作为标题,这些链接只是在页面下方链接到每个相关的文本块。

代码有效,没有错误等,除了我无法成功编码 URL。
如果没有rawurlencode()链接工作得很好,但是它们有我需要管理的空间(也不会验证)。

我尝试了 justurlencode()并且效果很好,但是它添加了 + 而不是 %20 并且我读到 + 应该尽可能避免(也许这不准确,但没有解释为什么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.";

在源代码中,我可以看到rawurlencode()用 %20 替换空格,尽管浏览器地址栏中的 URL 没有 %20 而是用空格代替。单击链接什么也不做。

使用时的源代码rawurlencode()

// 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>

浏览器是 Iceweasel 17.0.9 FWIW。

编辑:根据durrrutti
所说 的进行测试,当我只使用锚而不是 ID 时,它工作得非常好。rawurlencode()

但是,这仍然会在 ID 中留下空格问题。

源代码现在只有锚编码而不是 ID:

// 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. Communications'>1. Communications</a>
<a id='2. Definitions and Conditions'>2. Definitions and Conditions</a>
4

1 回答 1

2

元素 ID 不能以字母字符(即 AZ 和 az)以外的任何其他字符开头。我认为这是你的问题。

更新:此外,ID 不能包含百分号。

于 2013-10-22T21:27:30.987 回答