<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>石間謙 勝手ブログ Ver.2.5 &#187; PHP</title>
	<atom:link href="http://jbar.jp/ishima/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://jbar.jp/ishima</link>
	<description>IT、iPhone、NOKIA、バー、日本酒、柏、冷麺、釣り、星、フードニングネタを書き綴るサイト</description>
	<lastBuildDate>Wed, 16 May 2012 02:13:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/tag/php/feed" />
		<item>
		<title>PHPライブラリrhaco</title>
		<link>http://jbar.jp/ishima/it/rhaco_php.html</link>
		<comments>http://jbar.jp/ishima/it/rhaco_php.html#comments</comments>
		<pubDate>Fri, 18 Jun 2010 07:09:53 +0000</pubDate>
		<dc:creator>石間</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rhaco]]></category>
		<category><![CDATA[simpletag]]></category>
		<category><![CDATA[スクレイピング]]></category>

		<guid isPermaLink="false">http://jbar.jp/ishima/?p=894</guid>
		<description><![CDATA[昨日、打合せの帰りに銀座のアップルストアでiPadに触れてきました。 平日の14時過ぎにも関わらず、店内は大勢の人で溢れかえっていました。あの独特の操作感は確かに面白いですが、やはり両手でないと操作ができないのは電子ブッ [...]]]></description>
			<content:encoded><![CDATA[<p>昨日、打合せの帰りに銀座のアップルストアでiPadに触れてきました。</p>
<p>平日の14時過ぎにも関わらず、店内は大勢の人で溢れかえっていました。あの独特の操作感は確かに面白いですが、やはり両手でないと操作ができないのは電子ブックリーダーとしては不便ではないかと思います。</p>
<p>少なくとも日本の通勤電車内であれを使うのは難しく、座った状態でないと鞄を持った人には操作ができません。</p>
<p>私もまだ実機を持っている人は一人しか見たことないですが、今後iPadのユーザは増えていくのでしょうか？</p>
<p>さて、話を戻して先日からブログパーツで悩んでいたウェブのスクレイピング。</p>
<p>今までSnoopy.class＋htmlSQLという組み合わせで対応していたのが、今回は限界となり様々なスクレイピングの方法を探してみました。</p>
<p>結果的にはPHPのライブラリのrhacoにあるSimpleTagが、今回の問題を解決してくれました。</p>
<p><a href="http://rhaco.org/">http://rhaco.org/</a></p>
<p>まだ使い慣れていないので、今後もうまく使えるかはわかりませんが・・・。近いうちにレポートを上げたいと思います。</p>
<p>下記のページはとても参考になりました。</p>
<p><a href="http://blog.shigepon.com/snippet78">http://blog.shigepon.com/snippet78</a></p>
<img src="http://jbar.jp/ishima/?ak_action=api_record_view&id=894&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://jbar.jp/ishima/it/rhaco_php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/it/rhaco_php.html" />
	</item>
		<item>
		<title>Snoopy.classは素晴らしい</title>
		<link>http://jbar.jp/ishima/it/snoopy-class.html</link>
		<comments>http://jbar.jp/ishima/it/snoopy-class.html#comments</comments>
		<pubDate>Wed, 20 Jan 2010 05:17:36 +0000</pubDate>
		<dc:creator>石間</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[snoopy]]></category>

		<guid isPermaLink="false">http://jbar.jp/ishima/?p=608</guid>
		<description><![CDATA[Snoopy.classを最近色々使っているが、こんな簡単に特定URLのリンク一覧を取得できるとは知らなかった。本当に素晴らしい。Snoopy.classには最近色々助けられるなぁ。アイデアもわいてくるし。]]></description>
			<content:encoded><![CDATA[<p>Snoopy.classを最近色々使っているが、こんな簡単に特定URLのリンク一覧を取得できるとは知らなかった。本当に素晴らしい。Snoopy.classには最近色々助けられるなぁ。アイデアもわいてくるし。</p>
<pre class="brush: php; title: ; notranslate">
&lt;?
require_once(&quot;./Snoopy.class.php&quot;);

$snoopy = New Snoopy;
$url=&quot;http://www.yahoo.co.jp&quot;;
$result=$snoopy-&gt;fetchlinks($url);
print_r($snoopy-&gt;results);

?&gt;
</pre>
<img src="http://jbar.jp/ishima/?ak_action=api_record_view&id=608&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://jbar.jp/ishima/it/snoopy-class.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/it/snoopy-class.html" />
	</item>
		<item>
		<title>FTPを使わずブラウザからファイルのアップロード</title>
		<link>http://jbar.jp/ishima/it/flash_file_uploader.html</link>
		<comments>http://jbar.jp/ishima/it/flash_file_uploader.html#comments</comments>
		<pubDate>Tue, 05 Jan 2010 14:00:52 +0000</pubDate>
		<dc:creator>石間</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[file upload]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://jbar.jp/ishima/?p=553</guid>
		<description><![CDATA[FTPは便利だが、環境によってはユーザにFTPを使わせたくない場合もある。このような時にFTPの利便性を損なわないまま、ブラウザでファイルをアップロードできる環境があると便利だ。 特に下記のFlashFileUpload [...]]]></description>
			<content:encoded><![CDATA[<p>FTPは便利だが、環境によってはユーザにFTPを使わせたくない場合もある。<br />このような時にFTPの利便性を損なわないまま、ブラウザでファイルをアップロードできる環境があると便利だ。 特に下記のFlashFileUploaderはなかなか便利だった。</p>
<p><a href="http://don.citarella.net/index.php/actionscript-examples/flash-file-uploader/#custom">http://don.citarella.net/index.php/actionscript-examples/flash-file-uploader/#custom</a></p>
<p><img class="alignleft size-medium wp-image-559" title="WS000002" src="http://jbar.jp/ishima/wp-content/uploads/2010/01/WS000002-300x130.jpg" alt="WS000002" width="300" height="130" /></p>
<p>このFlashFileUploaderはアップロードの進捗表示もできるのでなかなか便利だ。アップロード先もPHPのスクリプトを見られる人ならすぐに変更できる。</p>
<p>上記のURLからダウンロードすれば、解凍したフォルダごとそのまま利用できる。特に設定は不要だ。ただ、基本が英語のまま書かれているので、メニューなどを日本語化したい場合はエディタなどで各英語メニューの単語を探してメニューを日本語にすればよい。ただ、その際にheadタグ内でcharsetなどを設定してあげないと文字化けする場合がある（デフォルトでは設定されていない）。もしくは.htaccessなどで文字コードを設定してしまうとよい。<br />またスクリプト内の最初に記述されているxmlのlangもenのままなので、これもjaに直そう。<br />私はデータベースを使う関係とこの仕組みがFlashを使っているので、UTF-8が良いのではないかと考えてスクリプトの文字コードやデータベースのコードもすべてUTF-8にしているが今のところ特に問題はない。ただし日本語のファイル名などは試していない。</p>
<p>ただ気をつけたい点があった。これはFlashを利用したシステムなので、BASIC認証のかかったフォルダ下におくと動作しない。これはFlashの制限でBASIC認証を通過できないためだ。<br />調べた限りではこのようなことを行いたい場合はFlashからproxyとしてPHPのスクリプトを呼び出してBASIC認証をすり抜けるやり方があるようだ。もしかするとこのスクリプトのupload.phpを改造すればそれも可能なのかもしれないが、そこまでは試していない。</p>
<p> </p>
<p>他にも同様のものとして下記のようなものがあるようだが、こちらはまだ試していない。</p>
<p>http://www.inaflashuploader.com/</p>
<img src="http://jbar.jp/ishima/?ak_action=api_record_view&id=553&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://jbar.jp/ishima/it/flash_file_uploader.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/it/flash_file_uploader.html" />
	</item>
		<item>
		<title>twitterのフォロワーを取得する</title>
		<link>http://jbar.jp/ishima/it/howto_get_follower_on_twitter.html</link>
		<comments>http://jbar.jp/ishima/it/howto_get_follower_on_twitter.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 04:42:17 +0000</pubDate>
		<dc:creator>石間</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[htmlsql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[snoopy.class]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://jbar.jp/ishima/?p=500</guid>
		<description><![CDATA[twitterのフォロワーを取得するスクリプトを書いてみた。 $followersに指定したアカウントのフォロワーが格納される。PHPのSnoopy.classとhtmlSQLでtwitterのXMLファイルからscre [...]]]></description>
			<content:encoded><![CDATA[<p>twitterのフォロワーを取得するスクリプトを書いてみた。<br />
$followersに指定したアカウントのフォロワーが格納される。PHPの<a href="http://sourceforge.net/projects/snoopy/">Snoopy.class</a>と<a href="http://www.jonasjohn.de/lab/htmlsql.htm">htmlSQL</a>でtwitterのXMLファイルからscreen_nameタグのtextを取得するという方法で実現した。htmlSQLはXMLのようにタグで作られている時に絶大な効果を発揮することがわかります。</p>
<p>Snoopy.classやhtmlSQLは自分の環境に合わせて取り込むようにパスを変更すること</p>
<pre class="brush: php; title: ; notranslate">
require_once(&quot;./Snoopy.class.php&quot;);
require_once(&quot;./htmlsql.class.php&quot;);

	$wsql = new htmlsql();
	$username = &quot;ishimaken&quot;;   // フォロワーを取得したいTwitter のアカウント

$obj = new twitter;
$followers = $obj-&gt;GetFollower($username);
	print_r ($followers);

class twitter{
	function GetFollower($username){
    	$wsql = new htmlsql();
	    //connect to a URL  get followers
	    	if (!$wsql-&gt;connect('url', 'http://twitter.com/statuses/followers.xml?screen_name='.$username)){
    	    	exit;
	    	}
    		if (!$wsql-&gt;query('SELECT text FROM screen_name')){
        		exit;
	    	}

    		foreach($wsql-&gt;fetch_array() as $row){
    				$args[]=$row[&quot;text&quot;];
			}
			return $args;
	}
}
</pre>
<img src="http://jbar.jp/ishima/?ak_action=api_record_view&id=500&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://jbar.jp/ishima/it/howto_get_follower_on_twitter.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/it/howto_get_follower_on_twitter.html" />
	</item>
		<item>
		<title>「みがわったー」で勝手にtweet！</title>
		<link>http://jbar.jp/ishima/it/migawatter.html</link>
		<comments>http://jbar.jp/ishima/it/migawatter.html#comments</comments>
		<pubDate>Mon, 21 Dec 2009 12:12:14 +0000</pubDate>
		<dc:creator>石間</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[みがわったー]]></category>

		<guid isPermaLink="false">http://jbar.jp/ishima/?p=489</guid>
		<description><![CDATA[Twitterのビジネスモデルは正直どんなものなのか疑問視しているが、飽きやすいIT業界の中でまだ話題性があるのは事実だ。 つい先日まであったセカンドライフなんて言葉もすでに消えてしまった感があるが、Twitterはどこ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/">Twitter</a>のビジネスモデルは正直どんなものなのか疑問視しているが、飽きやすいIT業界の中でまだ話題性があるのは事実だ。<br />
つい先日まであったセカンドライフなんて言葉もすでに消えてしまった感があるが、Twitterはどこまで生き残ることができるのだろうか。</p>
<p>さて、そんな事はさておき、ブログやネット上の更新情報を自動でtweet（つぶやいて）してくれる機能を作ってみた。twitterのAPIやcurlなどを使わないので様々な環境下でも使い回しができる可能性が高いはず。<br />
自分の代わり（身代わり）につぶやいてくれるので「<strong><span style="color: #ffcc00;">みがわったー</span></strong>」と名づけよう。とりあえずGoogleTrendの旬な検索キーワードを自動で抽出してtweetするようにしてみた。<br />
「何を」抽出して表示するかという部分をモジュール化すれば色々活用できそうだ。</p>
<p>pingサーバに更新通知をするように自分のウェブに誰かのアクセスがあるたびにtweetしてくれれば、このサイトでも1日400回程度はつぶやいてくれることになる。1時間に15回程度つぶやいてくれるのだから、ある程度Twitterからのユーザを少しでも引き込めるかもしれない。</p>
<p>これには、<a href="/ishima/it/htmlsql_20091217.html">先日の記事</a>にも書いたSnoopyを利用した。<br />
htmlSQLも活用すればネット上の情報を比較的容易に加工できる。<br />
実際、twitter上でも天気予報、地震速報、時報、プレゼント応募などに利用され始めている。<br />
これを活用すれば商店街などで、まとめてポータルサイトを作るのではなく、各々の店にとあるファイル名を作らせて、それをhtmlSQLで自動収集してtweetなんてことも可能だ。うーん、ビジネスモデルになりそうな気がしてきた。敢えてポータルサイトを作らないというところがミソになるかもしれない。</p>
<p>でもこれだけではなくまだ活用方法がある気がする。投票的な要素を統計的に集められれば面白いかもしれない。ちょっとアイデアをまとめるまで具体的に書くのはやめよう。</p>
<img src="http://jbar.jp/ishima/?ak_action=api_record_view&id=489&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://jbar.jp/ishima/it/migawatter.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/it/migawatter.html" />
	</item>
		<item>
		<title>掲示板のスパム対策　本文にURLを禁止している場合</title>
		<link>http://jbar.jp/ishima/it/spam_tips_20091022.html</link>
		<comments>http://jbar.jp/ishima/it/spam_tips_20091022.html#comments</comments>
		<pubDate>Thu, 22 Oct 2009 08:35:00 +0000</pubDate>
		<dc:creator>石間</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[スパム対策]]></category>

		<guid isPermaLink="false">http://jbar.jp/ishima/?p=365</guid>
		<description><![CDATA[掲示板のスパム対策には多くの対策方法があるが、メンバー（ログイン）制を取っておらず自由に書き込みできる掲示板では意外と対策が面倒だ。 以前にも書いたJcapのような画像認証でもある程度の対策はとれるが、自分のためにメモ。 [...]]]></description>
			<content:encoded><![CDATA[<p>掲示板のスパム対策には多くの対策方法があるが、メンバー（ログイン）制を取っておらず自由に書き込みできる掲示板では意外と対策が面倒だ。<br /> 以前にも書いたJcapのような画像認証でもある程度の対策はとれるが、自分のためにメモ。<br /> 下記の関数　URL_INCLUDE_CHECK()　を作っておく。<br /> よくスパムは色々なサイトのリンクを埋め込んでいることが多いので、シンプルに本文などに「http://」が含まれていたら排除するようにする。本文（$value）のチェック時に URL_INCLUDE_CHECK($value) としてTrueが返ればhttp://が含まれていると判定する。<br /> もちろん、この場合まともな書き込みでもhttp://が含まれていたら書き込めなくなる。この為、URLの書き込みなどを禁止している掲示板などにだけ使える簡易的な対策ということになる。一番確実な方法はやはID,パスワードによるものなのだが、URLをブロックするのは効果が結構ある。（大体はどこかのサイトに誘導したいという意図があるので）</p>
<pre>
<pre class="brush: php; title: ; notranslate">&lt;br /&gt;&amp;lt;?&lt;br /&gt;function URL_INCLUDE_CHECK($value) {&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;	if (strstr($value,&quot;http://&quot;)&amp;lt;&amp;gt;false) {&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;		return true;&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;	}else{&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;		return false;&lt;br /&gt;&lt;%%KEEPWHITESPACE%%&gt;	}&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;</pre>
</pre>
<img src="http://jbar.jp/ishima/?ak_action=api_record_view&id=365&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://jbar.jp/ishima/it/spam_tips_20091022.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://jbar.jp/ishima/it/spam_tips_20091022.html" />
	</item>
	</channel>
</rss>

