プロフィール

島田圭二

Author:島田圭二
Follow shimanp on Twitter

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
読断と変見内検索
訪問ありがとうございます
最近のコメント
最近のトラックバック
関連リンク
カテゴリー
月別アーカイブ


スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
PHPでtwitterに投稿
いまさら感がありますが、TwitterのBotを作ろうと思って、まずは投稿してみた。言語はPHP。

とりあえずソース


<?php
$url = "http://twitter.com/statuses/update.xml?";
$username = "ユーザ";
$password = "パス";
$params = "status=". rawurlencode("投稿するメッセージ");

$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
)
)));
?>

たったこれだけ。

まずTwitterのAPIの説明


TwitterAPIのドキュメントを開く。
この中に「statuses update」がある。これが投稿に関するAPIなので開いて読む。

読むと以下のことがわかった。ような気がする。
・URLは「http://twitter.com/statuses/update.[format]。
 formatの部分はレスポンスの形式を入力する。
・形式はxml, json, rss, atom がある。
・HTTPのメソッドはPOST。
・認証が必要
・負荷制限なし?1時間に150回までしかリクエストしちゃダメってのがないらしい。
・POST時のパラメーターは二つで、statusとin_reply_to_status_id。
 statusは投稿するメッセージなので必須。
 in_reply_to_status_idは別のTwitterユーザに対する返答の場合指定するオプションパラメータ。

ソースの説明


たいしたソースではないので説明というほどでもないけど、一応。

PHPにはfile_get_contentsという便利な関数がある。
この関数にHTTPのURLを指定すると、指定したURLにHTTPリクエストを発行して、
HTTPレスポンスを文字列で返してくれる。
なので、今回はこの関数を利用してTwitterに接続を試みる。
$result = file_get_contents($url.$params , false, stream_context_create(array(

第一引数に$URL+$paramsを指定している。
URLにはAPIにあったURLを指定し(formatはxmlにした)、パラメータにAPIで必須のstatusを指定。
第二引数はレスポンスを読み込むときエンコードするかとかバイナリとかなので、
とりあえず、falseにする。
このAPIでは認証を使用するため独自のコンテキストを作成するので第三引数に
stream_context_createを指定。
認証にはいくつか方法があるみたいだけど、今回はBasic認証を使用した。

以上説明終わり。

*参考URLっていうかもろぱくリ
HIRACCHI H.D.:PHPでTwitterに投稿

スポンサーサイト
php | 【2009-08-08(Sat) 18:41:34】 | Trackback:(0) | Comments:(2)
php5.2インストールメモ - windowsXP
ハードディスクを変えてOSを入れ替えたので再度PHPをインストールする。
以下設定メモ。

PHPをダウンロード


http://www.php.net/downloads.phpを開く
Image5.jpg
Windows BinariesのPHP 5.2.9-2 zip packageをクリックすると以下が開く
Image4.jpg
jp.php.netをクリックしてダウンロード

PHPをインストール


ダウンロードしたZIPを入れたいディレクトリに解凍しておしまい。

ApacheにPHPのモジュールを追加


ApacheにPHPを実行させるためにhttpd.confにPHPのモジュールを設定する。

1.httpd.confを開く
Apacheをインストールしたディレクトリのconfのhttpd.conを開く

2.LoadModuleの最後にPHPのモジュールを追加
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so

上記のような記述があるので、最後あたりに以下を追加
LoadModule php5_module c:/bin/php/php5apache2_2.dll

「c:/bin/php」の部分はPHPをインストールしたディレクトリを指定する。
またApacheのバージョンが2.0の場合は「php5apache2.dll」を指定する。

ApacheにPHPファイルを認識させるために拡張子を登録する


Apacheにこの拡張子はPHPのファイルですよ、と認識させるために拡張子を登録する
1.httpd.confを開く

2.AddTypeの最後にPHPの拡張子を追加
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

AddTypeで検索すると上記のような部分があるので以下を追加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

2行目のx-httpd-php-sourceの設定はphpのソースとしてブラウザに表示するための設定。
上記の場合だと拡張子がphpsのファイルの場合は中身がそのままブラウザに表示される。
表示する必要がない場合は設定する必要はない。

PHPの設定ファイル、php.iniを作成


PHPをインストールしたホームディレクトリ直下に、「php.ini-dist」というファイルがあるので、
これを「php.ini」に名前を変更する。終わり。

PHPのiniファイルをApacheに認識させる


PHPの設定ファイルphp.iniファイルをApacheに認識させる設定を行う。

httpd.confを開いて、先ほど追加したLoadModuleの後あたりに以下を追加
PHPIniDir "c:/bin/php"

c:/bin/phpの部分はPHPをインストールしたディレクトリ

とりあえず、ここまでの設定で一応ApacheからPHPを実行することができる
以下からは個別設定

php.iniの設定変更


1.グローバル変数の自動生成をオフにする
register_globalsを探ししてオフになっていなければ
register_globals = Off
にする
オンになっているとフォームの値を、$フォーム名で取得できるため楽だけど、セキュリティ的に
よくないらしいのでオフにする

2.フォームの値の自動変換をオフにする
magic_quotes_gpcを探しオンになっていたら、
magic_quotes_gpc = Off
にする
オンになっているとフォームから取得したデータに「'」「"」などがあると
勝手に「\'」「\"」に変換してしまう

3.拡張モジュールの追加
文字列を扱う関数のモジュールを使用するため拡張モジュールを追加する
まず、拡張するモジュールがおいてあるディレクトリを指定する
extension_dir = "./"
extension_dir = "C:/bin/php/ext"
に変更する
:extension=php_mbstring.dll
のコメントアウトをはずすして
extension=php_mbstring.dll
に変更する。

PEARライブラリインストール


PHPの定番的なライブラリPEARをインストールする。
1.go-pear.batを実行する
PHPホーム直下にあるgo-pear.batをEnterで実行する
pear_install_1.jpg
何も入力せずEnter
pear_install_2.jpg
何も入力せずEnter
pear_install_3.jpg
PEARを使用できるように、php.iniを自動で書き換えていいかどうかなので、Yを入力しEnter
pear_install_4.jpg
何も入力せずEnter
pear_install_5.jpg
何も入力せずEnter

2.PEARを環境変数に登録
PHPホーム直下に作成された「PEAR_ENV.reg」をダブルクリックして実行する

以上でPHPのインストール完了
以下動作確認

ApacheからPHPを実行できるか確認


以下のファイルを作成
<html>
<head<>title>PHP TEST</title<>/head>
<body>
<?php phpinfo(); ?>
</body>
</html>

ファイル名はphpinfo.phpとかにしてApacheのドキュメントルートに置く
で「http://localhost/phpinfo.php」をブラウザから開く。
以下が表示されれば成功
php_comfirm.jpg

PEARがインストールされているか確認


1.PEARの情報を表示するライブラリをインストール
デフォルトでphpinfoみたいなものがインストールされていないので別途インストール
コマンドプロンプトを起動して、PHPのホームディレクトリにカレントを移動する。
pear install pear_info
と入力してEnter。
エラーが出た場合は環境変数の設定がおかしいと思われるのでPEARの環境変数を修正する

2.ブラウザからPEAR情報を確認
以下のファイルを作成
<?php
require_once "PEAR/Info.php";

$info =& new PEAR_Info();
$info->show();
?>

ファイル名はpearinfo.phpとかにしてApacheのドキュメントルートに置く
で「http://localhost/pearinfo.php」をブラウザから開く。
以下が表示されれば成功
pear_info.jpg

以上で動作確認終了

php | 【2009-05-04(Mon) 16:42:30】 | Trackback:(0) | Comments:(1)
phpの正規表現 - HTMLタグを消去するメモ

やりたいこと


PHPで取得したHTMLのタグを全て消して、文章のみ取得したかった。

でどうやる?


正規表現を使ってやるのがよさそうだ。

やってみた


preg_replace('/<("[^"]*"|\'[^\']*\'|[^\'">])*>/','',$html);

いろいろググったり試したりしてみたらこれが良さげだ。
ちなみにPHPには正規表現で置換する関数が二つあり、ereg_replaceとpreg_replaceがあるようだ。
ereg_replaceはPHP本来のものでpreg_replaceはperl互換のものらしい。
で、preg_replaceのほうがperlの強力な正規表現が使えなおかつ、高速らしい。

でこの正規表現どういう意味?


/<("[^"]*"|\'[^\']*\'|[^\'">])*>/

説明する自信が実はない・・・がとりあえずやってみる。
1.スラッシュで囲んでるけど何?
まず、始めと最後を/で囲まれているのは、Perlの正規表現の決まりごと。
/で囲まれたパターンに一致するものを置換する。
ちなみに後ろの/の後にオプションをつけることもできる。がここでは語らない。

2.スラッシュの後に<がくるけど?そして最後も>だけど?
HTMLのタグは<>で囲まれたところなので、<で始まり>で終わるようにしている

3.("[^"]*"|\'[^\']*\'|[^\'">])って括弧で囲まれているが何?
まず()で囲まれている部分はグループになる。
()内の文字列で一つのパターンをあらわす。()の後に*がついているが、
これは()内のパターンにマッチした文字列を0回以上という意味になる。

4.括弧内はどんな意味?
まずよく見ると文字列内に「|」がいくつかある。
これはOR(または)の意味で、前のパターンまたは後ろのパターンという感じになる。
なのでとりあえず「|」で区切ってみると、
"[^"]*"

\'[^\']*\'

[^\'">]

の3つのパターンがあることがわかる。
これらのどれかにあてはまれば()内のグループパターンはマッチすることになる。
では上から順にどういう意味か見ていく
"[^"]*"

これは"で始まり、"で終わるというパターンをあらわしている。
""の間に入る文字列は"以外であればOKである。[^"]というのは"以外という意味。
で*があるので"以外の文字列が1文字以上ということになる。


\'[^\']*\'

これも上の"のパターンを'に置き換えただけ。シングルクォーテーションの前に\があるのは、
'をエスケープするため。

最後
[^\'">]

'、"、>の3つ以外の文字列をあらわす

以上説明おしまい。

補足
てかPHPにはHTMLタグを除去する関数がすでにある。。。
それはstrip_tagsという関数である。

さらに補足
scriptタグだけうまく消えなかったので、このタグだけ別の正規表現で消して見た。
/).|\n)*<\/script>/

どういう意味かは面倒なので省く

さらにさらに補足
PHPの正規表現のチェックをしてくれる便利なサイト↓
PHP正規表現チェッカー

php | 【2009-01-18(Sun) 16:39:12】 | Trackback:(0) | Comments:(0)
Eclipse3.4でPHP - 設定手順
前提条件として、Apache2、PHP5、Eclipse3.4PHP用(PDT)がインストールされていること。

デバッガーの指定


PHPをデバッグするための設定
php.iniに以下を追加。追加する場所はAdded by go-pearの上あたりか一番最後でいいと思う。
僕はAdded by go-pearの真上に追加した
[Zend]
zend_extension_ts="C:\php\ZendDebugger.dll"
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always

zend_extension_tsにはZendDebugger.dllのパスを指定する
ZendDebugger.dllはpleiades-all-in-one-phpでダウンロードした場合は、
その直下にZendDebuggerフォルダがある。
このフォルダの中に5_2_x_compみたいなフォルダがあるから、自分のPHPのバージョンの
フォルダを探して開く。例えばPHPのバージョンが5.1.2だと5_1_x_compを開く。
中にZendDebugger.dllが入っているから、ここのパスを指定する。
もしくはこのdllをどこか別のフォルダにもっていってそのパスを指定してもいい。
ZendDebugger.dllが見つからない場合はhttp://downloads.zend.com/pdt/server-debugger/より
ZendDebugger-5.2.14-cygwin_nt-i386.zipをダウンロードする。

Eclipse - PHP実行可能ファイル指定


eclipseを開いて、ウィンドウの設定を開く
eclipse_php1

PHPのPHP実行可能ファイルを選択
eclipse_php2
上記の画面で追加ボタンでPHPの実行可能ファイルを追加する

eclipse_php3
名前は任意。PHPのバージョン名などわかりやすいものがいい。
実行可能ファイル・パスに、インストールしたPHPのphp.exeのパスを指定する。
PHP iniファイル(オプション)にphp.iniファイルを指定する。
(上記画像では指定していないが指定しておいたほうがいい)
PHPデバッガーはZendデバッガーでOK。これはPHPをデバッグするときに使用するデバッガー。

Eclipse - PHPサーバーの設定


PHPのPHPサーバーを開く。
eclipse_php_sv1
Default PHP web Sever・・・をダブルクリック、もしくは選択して編集。

eclipse_php_sv2
サーバーを示すURLを「http://localhost/eclipse」としてOK。

これでeclipse側の設定終了

Apacheエイリアス設定


ApacheがEclipse上で作成したPHPファイルを認識するよう設定。
Apacheのホームディレクトリにあるconfフォルダを開く。
この中に、httpd.confがある。
http.confの中に以下の内容がある
<IfModule alias_module>
#
# Redirect: Allows you to tell clients about documents that used to
# exist in your server's namespace, but do not anymore. The client
# will make a new request for the document at its new location.
# Example:
# Redirect permanent /foo http://localhost/bar

#
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
#
# If you include a trailing / on /webpath then the server will
# require it to be present in the URL. You will also likely
# need to provide a section to allow access to
# the filesystem path.

#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
ScriptAlias /cgi-bin/ "D:/Apache Group/Apache2.2/cgi-bin/"

</IfModule>
この内容の「# the filesystem path.」の下辺りに以下を追加する
Alias /eclipse "C:/workspace/"
<Directory "C:/workspace/">
Options Indexes Multiviews ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>

「C:/workspac」の部分はEclipseで作成したプロジェクトのworkspaceのパスを指定する

これで設定は完了

php | 【2008-12-08(Mon) 01:10:45】 | Trackback:(0) | Comments:(0)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。