2013-03-26 33 views
1

所以我繼續回答我自己的問題,並創建了一個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>

有什麼想法?

回答

-1

# -links去一個錨標記:

<a name="Test">Anchor</a> 
<a href="#Test">Go to Anchor</a> 

您沒有任何在該輸出。

+0

所以換句話說我的PHP都是錯的? – TheWebs 2013-03-26 18:57:58

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提供下面的鏈接)。另一方面,如果您必須在真正舊的瀏覽器上支持很多用戶,則首選首選。

+0

非常感謝鏈接...這就是我一直在尋找的。 :) – Steve 2013-03-26 16:59:30

+0

亞,但即時通訊不使用HTML 5 .... – TheWebs 2013-03-26 19:01:36

相關問題