2013-03-26 2 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

1

중 하나를 HTML에서 올바른 위치에 앵커 태그를 추가하거나 id의 사용

앵커 :

<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

+0

나중에하지만 HTML 5 ....를 사용하지 않습니다. – TheWebs

관련 문제