그래서 나는 대답을 내 자신의 질문에 가서 작동 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>
어떤 생각?
그래서 다른 말로하면 내 PHP는 모두 잘못입니까? – TheWebs