2012-08-22 72 views
1

如何獲取名爲「tag」的<meta>中的所有值並在頁面上回顯它們?獲取元數據標籤php

這是用HTML IM:,即時通訊使用

<meta name="tag" content="plant"/> 
<meta name="tag" content="leaf"/> 
<meta name="tag" content="waterdroplet"/> 
<meta name="tag" content="water"/> 

PHP:

$tags = array (get_meta_tags ("http://s0ulp1xel.x10.mx/background-garage/?p=photo&photo=1")); 
echo $tags; 

其結果是,它只是回聲命名爲 「標記」 最後<meta>

+0

當然 - 你總是覆蓋名爲''tag''的標籤;-) - 你只有一個值 - 這是最新的。 – thedom

回答

0

您正在獲取標籤,但沒有正確顯示它們。

您不能在陣列上使用echo

你可以使用var_dump來查看你有的整個數組 - 它應該告訴你如何在你的代碼中訪問它。

2

get_meta_tags通過他們返回一個數組,使用print_r()看到它的結構和循環然而,打印出來你想要的:

foreach($tags as $tag){ 
    echo $tag."\n"; 
} 

編輯:你不需要另一個堅持的get_meta_tags的restult數組,那麼你沒有理由再多一個。

explode(',',$meta['tags']); 
+0

@J V打印陣列陣列 – atomikpanda

+0

它被換行符隔開,查看源代碼以更清楚地看到遞歸。如果它僅僅是一個數組中的數組,那麼'get_meta_tags'沒有達到你期望的效果,看到了什麼,請嘗試把所有的標籤放在逗號分隔的字符串中,然後'split()'。 –

+1

@J V split()在ver。中已棄用。 5.3.0。有沒有其他的選擇? – atomikpanda

0

您在設置標籤

<meta name="tag" content="xx" /> 
<meta name="tag" content="yz" /> 

當您執行對get_meta_tags()犯了一個錯誤,它只會顯示你的最後值(在這種情況下:yz

所以你需要在標籤上加上不同的名稱

例如

<meta name="tag1" content="yz" /> 
<meta name="tag2" content="yz" /> 
0

名稱必須是唯一的。 See the documentation of this function

If two meta tags have the same name, only the last one is returned. 

所以,你只能與NAME =「標籤」元標記,所以最好嘗試爲逗號分隔值。

+0

我將如何獲得作爲不同標籤的逗號分隔值? – atomikpanda

+0

我會使用'',但它取決於您需要的元標記。 –

1

如果您的問題現在是我如何將逗號分隔的值作爲不同的標籤?,你可以做這樣的事情:

<meta name="tag" content="plant, leaf, waterdroplet, water" /> 

$tags = get_meta_tags('yourfile.html'); 
$tags = array_map('trim', explode(',', $tags['tag'])); 

這會爆炸的話到一個數組中,並刪除任何空白,然後你可以遍歷這個輸出/任何其他:

例如

foreach($tags as $k => $v) { 
    echo $k . ': ' . $v . '<br />' . "\n"; 
} 

將輸出:

0: plant 
1: leaf 
2: waterdroplet 
3: water 
+0

我怎樣才能使這成爲一個搜索,獲取標籤,並顯示結果? – atomikpanda