Hatena::Groupstudyroom

phaのPHPとか自習室 このページをアンテナに追加 RSSフィード

PHP(CakePHPとか)、JavaScript(AJAXとか)、MySQL、UNIX、Fireworksなんかを身につけたい><
2007 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2009 | 01 | 02 | 03 | 04 |
2010 | 01 | 06 |
2011 | 01 |

2008-10-13

phpでDOMとか

| phpでDOMとか - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - phpでDOMとか - phaのPHPとか自習室 phpでDOMとか - phaのPHPとか自習室 のブックマークコメント

http://imagepick.yuyarin.net/http://favotter.matope.com/

yuyarin
23:37
<?php
$uri = substr($_SERVER['REQUEST_URI'], 1);
$src_document = new DOMDocument('1.0', 'UTF-8');
$src_document->loadHTMLFile($uri);
$dst_document = new DOMDocument('1.0', 'UTF-8');
$dst_document->loadHTMLFile('./template.html');
$div = $dst_document->getElementById('contents');
$imgs = $src_document->getElementsByTagName('img');
for($i=0; $i<$imgs->length; $i++)
{
$div->appendChild($dst_document->importNode($imgs->item($i), true));
}
echo $dst_document->saveHTML();
?>

substr

第二引数の位置から第三引数の位置までを切り出す

new DOMDocument('1.0','UTF-8')

とりあえずDocumentオブジェクトを作るってことか

$src_document->loadHTMLFile($uri)

Documentオブジェクトに内容を入れる

.appendChild

>子要素群の最後に新しい子要素を追加する

.saveHTML

内部のドキュメントHTML 形式の文字列して出力する

23:38
 
エラー処理とかはここでは省略
OK
23:40
ほむ
yanbe
23:40
importNode初めて見た
23:40
 
ググって把握した
23:40
 
なるほど
yuyarin
23:40
importNodeして新しいドキュメントに関連づけしないといけない
23:41
 
あと第二引数をtrueにしないと
23:41
 
attributeとか全部情報落ちる
OK
23:42
うまいなー
さかいかずあき(id:send)
23:42
サブツリーが入らないからか
OK
23:42
流石
yanbe
23:43
importNode知らないとすげー面倒なことになるんだろうな
23:43
 
参考になりました
OK
23:43
loadHTMLFileを使えばいいのか。
23:44
 
loadHTMLだといろいろと面倒な事になるのか?
yuyarin
23:44
loadHTMLは文字列で
23:44
 
loadHTMLFileはファイルの場所なので
23:45
 
loadHTML(file_get_contents()) == loadHTMLFile
yanbe
23:45
FileなのにURL直接渡してもいいんだ
yuyarin
23:45
リモートファイルのオープンは設定に依ってできないことがある
23:46
 
importせずにappendChildすると、saveHTMLで"Wrong Document Error"とか出る