我發送一個帶有變量的url到一個php腳本,並希望該腳本根據變量返回修改或創建的meta標籤的相同html頁面。 所有完美的作品,除了未修改的標籤在體內,而不是頭部呈現...PHP file_get_contents和echo修改後的元標記
這裏是我的腳本:
<?php
$imagetype = 'image/jpeg';
$panourl = $_GET["panourl"];
$snapshoturl = $_GET["snapshoturl"];
$vfw = $_GET["vfw"];
$vfh = $_GET["vfh"];
$pano_html = file_get_contents($panourl);
$html = new DOMDocument();
@$html->loadHTML($pano_html);
$meta_og_img = null;
$meta_og_img_type = null;
$meta_og_img_width = null;
$meta_og_img_height = null;
foreach($html->getElementsByTagName('meta') as $meta) {
if($meta->getAttribute('property')=='og:image'){
$meta_og_img = $meta->getAttribute('content');
}
if($meta->getAttribute('property')=='og:image:type'){
$meta_og_img_type = $meta->getAttribute('content');
}
if($meta->getAttribute('property')=='og:image:width'){
$meta_og_img_width = $meta->getAttribute('content');
}
if($meta->getAttribute('property')=='og:image:height'){
$meta_og_img_height = $meta->getAttribute('content');
}
}
if (is_null($meta_og_img)) {echo '<meta property="og:image" content="'.$snapshoturl.'"/>'; }
if (is_null($meta_og_img_type)) {echo '<meta property="og:image:type" content="'.$imagetype.'"/>'; }
if (is_null($meta_og_img_width)) {echo '<meta property="og:image:width" content="'.$vfw.'"/>'; }
if (is_null($meta_og_img_height)) {echo '<meta property="og:image:height" content="'.$vfh.'"/>'; }
$before = array($meta_og_img, $meta_og_img_type, $meta_og_img_width, $meta_og_img_height);
$after = array($snapshoturl, $imagetype, $vfw, $vfh);
$pano_html = str_replace($before, $after, $pano_html);
echo $pano_html->saveHTML();
?>
所以我打開一個HTML頁面,檢查是否存在元proprety存在,如果不創建它,然後回顯HTML頁面。 問題是,在新的HTML生成的所有以前的meta標籤被推入到身體,並沒有呈現在頭... 有線索? THX !!!
如果getAttribute不提供任何內容 - 則使用setAttribute在文檔中創建它。 –
getAttribute完美無缺! 看起來像它的str_replace是問題,如果我刪除這部分老meta標籤留在頭部分??? –