2012-11-04 35 views
0

我目前在我的網站上有一個標題爲「服務」的邊欄,我希望使用「Windows」,「Linux」,「Android」等類別填充該邊欄。由於所有這些'類別'都存在於一個頁面(services.php)中,我有一個想法來錨定它們,這樣我就可以創建一個快速鏈接列表(services.php /#Windows,services.php /# Linux等)。我想要做的是使用PHP函數將在Services.php頁面上創建的所有錨點拉到側欄中,這樣如果我編輯services.php幷包括<a id="tips">Other useful things</a>,側欄會自動包含鏈接那個主播。有點像「爲這個頁面上的每個錨定」,建立到thispage.php /#anchor-name的鏈接。PHP:對於每個錨定標記

我希望這個問題比我的第一個問題更容易理解。我意識到我不是很清楚。

我知道我可以使用這個數據庫表,但我希望它是非常簡單的管理。

+0

,請複製粘貼一些代碼 – GBD

+0

過於一般,因爲我們不知道這些鏈接是如何產生的 – Tivie

+2

是否有碼?沒有代碼,沒有答案! –

回答

1

如果你想有一個像linkname對,是的,你會在這裏使用foreach()函數。假設你有這樣的:

$links = array(
    "index.html" => "Home", 
    "about.html" => "About Us", 
    "contact.html" => "Contact Us" 
); 

您可以使用此代碼來顯示它:

foreach ($links as $link => $name) { 
    echo "<a href=\"$link\">'$name'</a>"; 
} 

連帶顯示是這樣的:

<a href="index.html">Home</a> 
<a href="about.html">About Us</a> 
<a href="contact.html">Contact Us</a> 

這是你想要的嗎?

+0

嗨,差不多。正如我對Tivie提出的類似迴應所說的,我正在尋求避免創建靜態數據(例如數組)。 Tivie與他的功能是一致的,但我正在尋找一個頁面的錨標籤(而不是一個特定的數組,或div部分)。我已經更新了我的原始問題,以便更好地理解。謝謝 –

4

一個通用的答案:

舉例來說,假設你有一個ID =錨在您的錨休息一個導航欄。

例HTML:

$html = '<html>(...) 
<div id="anchors"> 
    <a href="anchor1.php">link number 1</a> 
    <a href="anchor2.php">another link</a> 
</div> 
(...) 
</html>'; 

實施例功能:

function findAnchors($html) 
{ 
    $links = array(); 
    $doc = new DOMDocument(); 
    $doc->loadHTML($html); 
    $navbars = $doc->getElementsByTagName('div'); 
    foreach ($navbars as $navbar) { 
     $id = $navbar->getAttribute('id'); 
     if ($id === "anchors") { 
      $anchors = $navbar->getElementsByTagName('a'); 
      foreach ($anchors as $a) { 
       $links[] = $doc->saveHTML($a); 
      } 
     } 
    } 
    return $links; 
} 

這將返回所有鏈接的數組。

輸出:

array 
    0 => string '<a href="anchor1.php">link number 1</a>' (length=39) 
    1 => string '<a href="anchor2.php">another link</a>' (length=38) 

編輯基地OP評論:

除非你的 「標籤」 他們不知何故,它的不平凡。一種方法是爲每個錨點添加一個類,然後橫切整個文檔。

例子:

HTML

$html = '<html>(...) 
<a class="anchor" href="anchor1.php">link number 1</a> 
(... stuff in here) 
<a class="anchor" href="anchor2.php">another link</a> 
(...) 
</html>'; 

功能:

function findAnchors($html) 
{ 
    $links = array(); 
    $doc = new DOMDocument(); 
    $doc->loadHTML($html); 
    $aTags = $doc->getElementsByTagName('a'); 
    foreach ($aTags as $a) { 
     $class = $a->getAttribute('class'); 
     if ($class === "anchor") { 
      $links[] = $doc->saveHTML($a); 
     } 
    } 
    return $links; 
} 
+0

這看起來很輕微一些調整。我能看到的唯一問題是,我希望將這些定位標記展開,例如:''你好歡迎來到我的網站.. 再見再見.''。我不會將所有的錨都包含在一個div內。 –

+0

檢查我編輯的答案 – Tivie