sprinkle.jsを利用すればiflame、object、SSIなどで外部のHTMLを読み込みしていたことと同じことができるようです。
使い方
- sprinkle.jsをダウンロードし適当なディレクトリにアップロード
- 使用するページでsprinkle.jsを読み込む
<script type="text/javascript" src="http://yourdomain/sprinkle.js"></script>
- 以下のように読み込みたいファイルを指定
<div src="読み込みたいファイル"></div>
おぉ、簡単。
まだ実験していなけど...。
UTF-8以外のHTMLを読み込むと文字化けするみたいです。
サイト外のHTMLは読み込みができないみたいです。
どんなことに使えるか想像ができませんが、便利そうなのでメモ。
参考ページ
トラックバック(0)
トラックバックURL:
ライブラリをインクルードしてたった数行で、WEBスクレイピング(HTML内を部分的に取り出し、表示する)ができる恐ろしいPHPライブラリを見つけました。
ライブラリは上記よりダウンロードできます。
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/simplehtmldom/simple_html_dom.php");
$html = file_get_html('http://hoshiya.biz');
foreach($html->find('title') as $row)
$row = $row->plaintext;
$row = mb_convert_encoding($row, mb_internal_encoding(), "auto" );
echo $row;
?>
たったこれだけで取得できます。
find()で取り出したい条件や要素を記入するだけです。
恐ろしく簡単で便利なのはタグはもちろん、idやclassも指定できるし、そのタグ自体を抽出することもできます。
検索結果の一覧や、リンク集なども楽に抽出ができそうな感じです。
その他の使い方などは「PHP Simple HTML DOM Parserマニュアルページ」を参照してみてください。
参考サイト
関連記事
トラックバック(0)
トラックバックURL:
指定したURLのHTMLソースから目的のタグ内の文字列をSQL文で取り出すことができるライブラリを見つけました。
今までは正規表現を使って文字列を取得していましたが、このライブラリならタグはもちろん、idやclassまで検索対象にできるスグレモノで、SQLの文法と配列が理解できれば、いろいろなことに使えそうです。
このように「HTML内を部分的に取り出し、表示する」ことを「Webスクレイピング」というそうです。
使用準備
- ライブラリをダウンロードして任意のディレクトにアップロード。
- 利用するファイルに「snoopy.class.php」と「htmlsql.class.php」をインクルード。
使用例
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/snoopy.class.php");
include_once($_SERVER['DOCUMENT_ROOT']."/lib/htmlsql.class.php");
function getTitle($url){
$wsql = new htmlsql();
// connect to a URL
if (!$wsql->connect('url', $url )){
print 'Error while connecting: ' . $wsql->error;
exit;
}
// execute a query:
if (!$wsql->query('SELECT * FROM title')){
print "Query error: " . $wsql->error;
exit;
}
// show results:
foreach($wsql->fetch_array() as $row){
//print_r($row);
echo $row['text'];
}
}
getTitle("http://hoshiya.biz");
?>
ちなみに、print_r($row)とすると、$rowに格納されている配列の内容が確認できます。
$rowの中身→ Array ( [tagname] => title [text] => 星屋工作室 )
例文
その他の例文はまた今度...。
制限
<div>の中の<div>など、同じタグに囲まれている文字列や要素はダイレクトに取得できず、一度大枠を取得して、再度その中から抜き出さなければならないようです。
関連記事
-
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/2011/03/index.php on line 308 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
PHP Simple HTML DOM Parserでタイトルタグ内の文字列を取得する:PHP|星屋工作室 hoshiya.biz -
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/2011/03/index.php on line 311 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
ページタイトル(titleタグ内の文字列)を取得する:PHP,Javascript|星屋工作室 hoshiya.biz
トラックバック(0)
トラックバックURL:
トラックバック(0)
トラックバックURL:
最近いろいろなサイトでみかける画像を ページの前面で表示するやつ。
コレ↓(クリックしてみてください)
Lightbox2というJavascript、導入が難しいのかなと思ったら以外に簡単。
- まずダウンロードして解凍
- 解凍後ファイルを任意のディレクトリにアップロード
(例:/js/lightbox/に解凍したjs,css,imageフォルダをアップロード)
- 使用するページのヘッダーに以下のコード記述
<script type="text/javascript" src="/js/lightbox/js/prototype.js"></script> <script type="text/javascript" src="/js/lightbox/js/scriptaculous.js?load=effects,builder"></script> <script type="text/javascript" src="/js/lightbox/js/lightbox.js"></script> <link rel="stylesheet" href="/js/lightbox/css/lightbox.css" type="text/css" media="screen" />
- lightbox.js内のアイコン画像のパスを変更
fileLoadingImage: '/include/js/lightbox/images/loading.gif', fileBottomNavCloseImage: '/include/js/lightbox/images/closelabel.gif',
- light.css内のアイコン画像パスを変更
#prevLink:hover, #prevLink:visited:hover { background: url(/js/lightbox/images/prevlabel.gif) left 15% no-repeat; } #nextLink:hover, #nextLink:visited:hover { background: url(/js/lightbox/images/nextlabel.gif) right 15% no-repeat; } - 表示対象画像にリンクする<a>タグ内にrel="lightbox"追記
<a href="test.jpg" rel="lightbox"><img src="thumbnail.jpg" /></a>
たったこれだけでリッチなサイトに変身です。
写真にグループ名を付けて、同じフォルダ内にある画像を次々めくったり、タイトルをつけたりすることもできます。
<a href="test.jpg" rel="lightbox" title="タイトル名">写真を見る</a>
<a href="image1.jpg" rel="lightbox[グループ名]">写真1</a> <a href="image2.jpg" rel="lightbox[グループ名]">写真2</a> <a href="image3.jpg" rel="lightbox[グループ名]">写真3</a>
MovableTypeを使用している方はプラグイン「LightBox2MT」を使用すると、画像挿入時は<a>タグ内にrel="lightbox"を自動的に入れてくれます。
ただし、画像をアップロードする際に「画像をポップアップで開く」を選択しているとLightbox2が使えません。
プラグインの配布は製作者の以下ブログ内からダウンロードできるので、ダウンロードしたら解凍し、/mt/plugins/内にアップロードするだけで使えます。
トラックバック(0)
トラックバックURL:
意外にロマンチストな星屋です。
今朝のズムサタで紹介された「Live!オーロラ」というサイト。
アラスカのオーロラをライブ映像で見れるというもの!
観たい!と思ってすぐにアクセスしました!
でも、さすがズムサタで放映されていることもあって、サーバーが重たかったです。
オーロラを観るためにはユーザー登録(無料)が必要で、早速登録しました!
iPhoneアプリもあるようです。
iPhoneアプリは無料ですが、アプリでオーロラを観るためには視聴ライセンスが必要で、ライセンス料を支払わないといけないようです。
| 30日ライセンス | 230円 |
|---|---|
| 90日ライセンス | 600円 |
| 365日ライセンス | 2,800円 |
auのケータイでも観れるそうです。http://malive.jp
スタッフブログやTwitter、Mixiのコミュニティもあるようです。
いつかは本物を観にいけたらいいなと思います。
トラックバック(0)
トラックバックURL:
タイトルの通りですが、今まで使用できていたPHPのインクルードが急に使えなくなりました。
PHPのバージョンを5.2から5.3に変更したからかもしれませんが、以下のエラーが出ます。
Warning: include_once() [function.include-once]: http:// wrapper is disabled in the server configuration by allow_url_include=0 in/home/users/2/lolipop.jp-dp********/web/tracking/index.php on line 182
結論からいうと、インクルードするファイルのパスをドキュメントルートで指定すれば解決です。
<?php include_once "/home/users/2/lolipop.jp-dp********/web/include.inc"; //または include_once $_SERVER['DOCUMENT_ROOT']."/include.inc"; ?>
include,include_once,require,require_onceも同様です。
今までは、 ホストディレクトリを指定していたため、今回エラーになりました。
<?php include_once "http://hoshiya.biz/include.inc"; //または include_once "http://".$_SERVER['HTTP_HOST']."/include.inc"; ?>
これに気づくのにしこたま時間がかかりました...。
解決できてよかったです。
エラー文のallow_url_include=0が原因だと思って、ひたすらGoogleで検索しましたが、ロリポップにはphp.iniでallow_url_includeに関する設定項目がなく、困っていました。
やれやれ...。
トラックバック(0)
トラックバックURL:
以下の画像のようにワード2007で作成した文章に中に図形を 挿入し、その図形をグループ化しました。しかし、後から図形を調整しようと思い、図形のグループ化を解除しようと思ったら解除できない...。
赤枠のように「グループ化・グループ化解除」のボタンがグレーになって押せない。
グループ化した図形を右クリックしてもメニューがグレーアウトされて押せない。
という状況に陥りました。
でも、解除できる方法がありました!
「文字列の折り返し」メニューで「行内」以外を選択すればグループ化を解除できるようです。
なぜ、行内にするとグループ化を解除できないのか意味がわかりませんが、右クリックのメニューでもとりあえず解除できたのでよかったです。
グループ化を解除すると、一時的にレイアウトが崩れてドキッとしますが、分かっていれば怖くないです。
しかし、このやり方を普通は気づかないですよね?
トラックバック(0)
トラックバックURL:
以前に「
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/2011/03/index.php on line 919 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
PHPのファンクションでMozshotを楽に使う|星屋工作室 hoshiya.biz
」の一部で
タイトルタグ<title></title>の間の文字列を取得するスクリプトを紹介しましたが、もっと短くできました。
<?php
function getTitle( $url ) {
$byte = 256;
while(empty($matches)){
//無限ループにならないようにバイト数を制限
if($byte > 10000){
break;
}
//file_get_contents($url)でも読めるが、バイト数指定で読み込む
$html = file_get_contents($url, NULL, NULL, 0, $byte);
preg_match("@<title.*?>(.*?)</title>@i" , $html, $matches);
$byte= $byte + 256;
}
$html = $matches[1];
$html = mb_convert_encoding($html, mb_internal_encoding(), "auto" );
return($html);
}
echo getTitle("http://hoshiya.biz");
?>
タイトルタグが見つからなかったり、 タイトルタグ<title></title>よりも前に大量の文字列があると読み込みに時間がかかるので、読み込みのバイト数上限を決め、タイトルが見つかるまで徐々に読み込みバイト数を増やしていくようにしました。
↓上記でhttp://hoshiya.bizのタイトルを取得した結果
星屋工作室 hoshiya.biz
20011/03/06追記
PHPのクラスライブラリPEARのパッケージ(iHTTP_Client)を使った方法が見つかったのでメモ。
こっちの方が高速!な感じがします...。
※PEARのパッケージHTTP_Clientと依存関係にあるHTTP_Request2が必要です。
<?php
function getTitle($targetUrl){
require_once $_SERVER['DOCUMENT_ROOT']."/lib/PEAR/HTTP_Client/Client.php";
$client =& new HTTP_Client();
$client->get($targetUrl);
$response = $client->currentResponse();
//余計な改行コードをスペースに変換
$response = str_replace( array( chr(10), chr(13), chr(9) ), chr(32), $response['body'] );
preg_match("/<title.*?>(.*?)<\/title>/", $response, $title_matches);
$title = $title_matches[1];
$title = mb_convert_encoding($title, mb_internal_encoding(), "auto" );
return($title);
}
echo getTitle("http://hoshiya.biz");
?>
ついでにJavascriptでタイトルを取得する方法もメモ。
※現在のURLのタイトルしか取得できません。
<script type="text/javascript">
document.write("このページのタイトルは→「"+document.title+"」です。");
</script>
結果:
関連記事
-
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/2011/03/index.php on line 1006 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
PHP Simple HTML DOM Parserでタイトルタグ内の文字列を取得する:PHP|星屋工作室 hoshiya.biz -
Warning: Missing argument 2 for getTitleLink(), called in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/blog/2011/03/index.php on line 1009 and defined in /home/sites/heteml/users158/m/h/0/mh0723/web/hoshiya.biz/include/function/function.php on line 104
htmlSQLを使ってタイトルタグ内の文字列を取得する:PHP|星屋工作室 hoshiya.biz
トラックバック(0)
トラックバックURL:




