所以我继续回答我自己的问题并创建了一个TOC,它有效,它吐出我想要的一切,接受锚标签不起作用。它不会跳到页面到适当的h1-6标签所在的位置。
我有以下php:
public function table_of_contents(&$content, $HeaderParameter){
//Creat Empty variables
$HeaderNums = "";
$ContentLink = "";
$IndentLast = 1;
//Creates a single string of header identifier. eg: "1234"
foreach($HeaderParameter as $Num){
$HeaderNums.= $Num;
}
//Setup header to search for our headers specified by user
if (preg_match_all('/<h(['.$HeaderNums.'])(.*?)>(.*?)(<\/h['.$HeaderNums.']>)/', $content, $Result)){
// Start Table
$ContentLink.="<ul id='TB_UL'>";
// Go through each result and add to our list
foreach ($Result[0] as $key => $title){
//Get header text
$HeaderText = strip_tags($Result[0][$key]);
// If user assign an ID then get it so that we can add our on
$TagIdRegexOutput = split('"',$Result[2][$key]);
// Check if user has already set an id, if so use theres
if($TagIdRegexOutput[0]){
$TagRef = $TagIdRegexOutput[1];
}
else{
$TagRef = $HeaderText;
}
//Set a level.
$IndentPosCurrent = $Result[1][$key];
//Create link to header
$ContentLink.='<li class="TB_Level' . $Result[1][$key] .'"><a class="TB_Link" href="#'.$TagRef.'">'.$HeaderText.'</a>'.'</li>';
// Create header tag
$HeaderTag = "h".$Result[1][$key];
// Replace header in content with our assign id
$content = str_replace($Result[0][$key], "<$HeaderTag"." id='$TagRef' ".">$HeaderText</$HeaderTag>", $content);
}
// End List
$ContentLink.="</ul> <!-- TB_Main-->";
}
echo $ContentLink;
}
这就像这样吐出html:
<ul id="TB_UL">
<li class="TB_Level1"><a class="TB_Link" href="#Test">Test</a></li>
<li class="TB_Level2"><a class="TB_Link" href="#More Test">More Test</a></li>
</ul>
#Test和#More测试是:<h1>Test</h1>
和<h2>More Test</h2>
有什么想法吗?
答案 0 :(得分:1)
将锚标记添加到HTML中的正确位置或使用id
s:
锚:
<h1><a name="Test">Test</a></h1>
ID:
<h1 id="Test">Test</h1>
编辑:我建议使用第二种方法,因为我认为name
属性不再适用于HTML5中的锚标记:http://www.w3.org/html/wg/drafts/html/master/obsolete.html#obsolete-but-conforming-features(感谢@Alohci提供以下链接)。另一方面,如果你必须在真正的旧浏览器上支持很多用户,那么第一个用户就更好了。
答案 1 :(得分:-1)
#
- 链接转到锚标记:
<a name="Test">Anchor</a>
<a href="#Test">Go to Anchor</a>
您的输出中没有任何内容。