2012-02-11 174 views
2

我想使用PHP注入元標記到現有的HTML文件,其中包含幾個JavaScript命令。我試圖解決的整體問題是將Facebook的開放圖元標記轉換爲在用javascript編寫的應用程序上調用的文件。使用PHP來讀取靜態HTML頁面,添加元標記,然後加載修改頁面

使用PHP,我嘗試閱讀index.html文件,找到標籤,插入meta標籤,然後回顯修改後的文件。問題在於修改後的文件總是以如下方式顯示頭標籤,並將它們放在文件中,從而跳過我添加的標籤。

<head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head> 

JavaScript的index.html文件被幾個不同的頁面重用的人,所以我不能只是把完成標籤它,因爲他們每次都可能是不同的。

如何在<head>標籤之後注入6個不同的metaog和一個fb標籤?

+1

你試過HTML/XML解析器嗎?似乎是完美的工具。 – 2012-02-11 19:56:50

+0

剛剛嘗試過一個HTML解析器。以爲我有它,直到我通過Facebook的對象調試器運行它。這仍然顯示行: 現在我更改的html部分顯示爲:<head> < meta http-equiv =「Content-Type」 因此,現在有兩個頭部分,一個使用實際的<>字符,另一個使用HTML實體。 這讓我瘋狂! – MarkK 2012-02-12 17:31:33

回答

1

在你的php文件中,指定一個變量。可以是任何東西,作爲一個例子:

$var=$randomarray[0][pagetitle]; 

將其插入頭部輸出

<meta property="og:title" content="<?php echo"$var";?>" /> 
+0

我試圖搜索字符,並且我試圖插入標記註釋來搜索和替換,但PHP不斷更改從原始index.html文件中讀取的文本,我需要將元標記注入。這是從一個攝影師畫廊軟件包,已經存在了幾年,並用JavaScript編寫。 – MarkK 2012-02-11 23:09:20

+0

哦你的腳本通過不斷更新靜態html頁面運行。您需要找到正在編寫html頁面的文件,並更改其中的值,每次更改時都會正確更新html文件。 – JimmyBanks 2012-02-11 23:13:19

+0

不,index.html是一個100%靜態頁面,但取決於URL行變量,會發生不同的Javascript動作。 Index.html在JAlbum或Phoyoshop中生成。我需要動態添加元標記,具體取決於點擊Facebook按鈕的圖庫中的數百個圖像頁面中的哪一個。一切從靜態index.html文件開始。所以這次我需要這套標籤,下次需要不同的標籤。 – MarkK 2012-02-12 02:20:58

0

如果你的PHP文件包含一個body標籤的話很容易只是做:

$file = file_get_contents('index.html');  
$str = '<meta /></head>';  
$file = str_replace('</head>', $str, $file); 
echo $file; 

只需用您預期的html替換$ str,一定要在最後加上「</head>」。

+0

不以PHP文件開頭,而是以現有的index.html文件開頭。我已經嘗試過file_get_contents('index.html'),然後搜索,插入元標記和回顯文件,但結果以上面提到的行結束,我的元標記經過後3行左右在文件中的行。即使只是讀取並回顯文件,也會從原始html文件更改結構。 – MarkK 2012-02-11 23:05:32

+0

不搜索,搜索標記,我將更新我的答案以適應您的方案。 – Shaheer 2012-02-12 09:01:33

+0

index.html確實包含標記,但不包含標記。 標記大大超過標記,因此最終會將meta標記置於部分之外,從而導致它們無法正常工作。我認爲這應該是這樣簡單,但事實並非如此。我認爲我應該使用ablr來搜索標籤,並用 {extra text}替換它。 – MarkK 2012-02-12 17:14:57