[PHP] Smartyで単純ループを使う

Smartyで単純ループさせるには以下のようにする。

これはPHPのforループで表現するなら以下と同等。

以下に、ループを使って年月日のセレクトボックスをSmartyで定義した例を示す。

select_00

参考サイト

{section},{sectionelse} | Smarty
http://www.smarty.net/docsv2/ja/language.function.section.tpl

[PHP] XAMPP環境でXdebugを使う

XdebugはPHP用デバッガー&プロファイラーツール。

Xdebug – Debugger and Profiler Tool for PHP
http://xdebug.org/

最新のXAMPPには同梱されているけど、XAMPPをインストールしただけでは有効にはならない。

Xdebugを有効にするには

php.iniを書き換えることでXdebugを有効にできる。

php.iniには既にデフォルトの設定が書き込まれてコメントアウトされている。

行頭のセミコロンを削除して xdebug.remote_enable = 0 を 1 に変更する (プロファイラを使わないのならば xdebug.profile_xxxxx はコメントアウトしなくてもよい)。その後、Apacheを再起動する。

Xdebugが有効になったか確認する

phpinfo() の出力に xdebug が含まれていれば有効になっている。

phpinfo() ではオプション設定も表示される。結構沢山のオプションがある。

XAMPP-1.8

NetBeansでのXdebugの使用

[ツール]-[オプション]メニューを選択し、[PHP]オプションの[デバッグ]タグで、[デバッガ・ポート]が9000になっていることを確認する。

9000番がデフォルトのポート番号だけど、php.iniのxdebug.remote_portオプションで異なるポートを指定することもできる。オプションの現在値はphpinfo()を見れば知ることができる。

options_00

簡単なプロジェクトを作成してブレークポイントを設定してデバッグセッションを開始し、処理がブレークポイントで止まればデバッガがちゃんと機能している。

デバッグセッションを開始した後、ステータスバーに以下のメッセージがずっと表示されている場合には、[デバッガ・ポート]の指定が実際のデバッガの設定と異なっていることが考えられる。

[PHP] RSSフィードの形式を調べる

コンテンツ配信系のウェブサイトで更新情報をRSSで配信するニーズあり。PHPのプログラミングとは直接関係ないが、PHPでサービスを実装するための予備知識としてRSSに関してざっくり勉強。

基本的には単なるXMLファイルなので、書式に関しては新たに勉強するほどのことは無いけど、RSSに特化した要素やオプションの類は理解が必要。

RSSフィードの生成はサーバー上で行うようにCMSを改良するか、コンテンツのデータベースからRSSフィードを生成するソフトを作成してcronで実行するか、などケースバイケース。

RSS2.0 RSSファイルを作る RSS配信
http://mrs.suzu841.com/rss20/

RSS Tutorial
http://www.w3schools.com/rss/default.asp

以下は2005年に執筆されたちょっと古い記事だけど、ブログでのRSS利用に関してわかりやすい。

Blogを支えるテクノロジー:第1回 RSSの要約配信はさらに加速する (1/6) – ITmedia エンタープライズ
http://www.itmedia.co.jp/enterprise/articles/0504/08/news051.html

[PHP] わかりやすいOAuth解説サイトまとめ

先日Twitter APIを使ってBotを作成したときにOAuthと呼ばれる認証処理が必要になった。オープンソースのライブラリがあったので、自前で認証手順を実装する必要が無くて楽できたけど、できればOAuthの基本的な予備知識は押さえておきたい。ネットを検索したらわかりやすい解説サイトが幾つか見つかったので以下にリンクを載せておく。

OAuth Community Site (公式サイト)
http://oauth.net/

非技術者のためのOAuth認証(?)とOpenIDの違い入門 | .Nat Zone – Identity, Privacy and Music
http://www.sakimura.org/2011/05/1087/

APIアクセス権を委譲するプロトコル、OAuthを知る - @IT
http://www.atmarkit.co.jp/fsecurity/special/106oauth/oauth01.html

OAuth 2.0でWebサービスの利用方法はどう変わるか(1/3)- @IT
http://www.atmarkit.co.jp/fsmart/articles/oauth2/01.html

デジタル・アイデンティティ技術最新動向(2):RFCとなった「OAuth 2.0」――その要点は? (1/2) – @IT
http://www.atmarkit.co.jp/ait/articles/1209/10/news105.html

単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる | .Nat Zone – Identity, Privacy and Music
http://www.sakimura.org/2012/02/1487/

[PHP] INIファイルを読み込むには

プログラムのちょっとした設定など、データベースよりもINIファイルに保存したほうが便利なこともある。

PHP自体もphp.iniというファイルに設定を保存しているところをみると、きっと標準関数が用意されているだろうと思って調べたら案の定。INIファイルをパースして連想配列に設定値を取り込んでくれるみたい。

PHP: parse_ini_file – Manual
http://jp.php.net/manual/ja/function.parse-ini-file.php

PHPの一般的なファイル入出力に関しては以下のページが参考になる。

ファイル入出力 | PHP Labo
http://www.php-labo.net/tutorial/php/file.html

[PHP] HTTP認証を行うには

必要に迫られて調べたところ、Apacheで.htaccessを使わずとも、PHPでHTTP認証(Basic/Digest)を行うことができるらしい。

Basic HTTP 認証の例

PHPファイルで実装された機能のみを制限したい場合にはこの方法は役立ちそう。サーバー上に格納されているファイルを保護したい場合などには、やはりディレクトリ単位でアクセス制限を掛けたいので.htaccessによる認証を使う必要がある。場合によって使い分けよう。

参考サイト

PHP: PHP による HTTP 認証 – Manual
http://php.net/manual/ja/features.http-auth.php

phpでベーシック認証 – bnote
http://www.bnote.net/php/php/22_basic_auth.shtml

[PHP] ウェブスクレイピングに役立つHTMLパーサーの参考リンクまとめ

ウェブスクレイピングという言葉がある。英語だとWeb Scraping。ちなみにScrapは「新聞記事を切り抜いてスクラップする」の「スクラップ」と同じだけど、ingが付くと「スクラッピング」じゃなくて「スクレイピング」と読む。ウェブサイトから情報を抽出することを「ウェブスクレイピング」と呼ぶらしい。

ウェブスクレイピング – Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0

ウェブサイトから情報を取得する場合、RSSやウェブサービスなどのAPIが用意されていればそれを使うけど、そうじゃなければウェブページのソースから情報を抜き出す仕組みが必要になる。それがウェブスクレイピングだ。ウェブスクレイピングに役立ちそうなHTMLパーサーを探したところ幾つかヒットしたので、実際に試しているブログ記事などと共に以下にリンクをまとめておく。たぶん近いうちにお世話になりそう。

Simple HTML DOM Parser

PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/

PHPでHTMLをパースして解析、編集して保存する方法 – さとうさんのキロク
http://sato-san.hatenadiary.jp/entry/2013/05/06/155919

PHP Simple HTML DOM Parserの使用方法 – Webスクレイピング ライブラリ
http://www.crystal-creation.com/web-app/tech/programming/php/library/simplehtmldom/

PHP Simple HTML DOM Parserを使ったWebスクレイピング入門 – Qiita
http://qiita.com/esehara@github/items/db231c99f8076aabdfb2

DOMDocument

PHP: DOM – Manual
http://www.php.net/manual/ja/book.dom.php

PHPでHTMLをパースして解析する簡単な方法 | 三度の飯とエレクトロン
http://blog.katty.in/1400

Goutte

fabpot/Goutte · GitHub
https://github.com/fabpot/goutte

WebスクレイピングライブラリGoutteで遊んでみる – hnwの日記
http://d.hatena.ne.jp/hnw/20120115

そろそろ Simple HTML DOM Parser を使うのはやめたほうがいい – localdisk
http://localdisk.hatenablog.com/entry/2014/02/05/%E3%81%9D%E3%82%8D%E3%81%9D%E3%82%8D_Simple_HTML_DOM_Parser_%E3%82%92%E4%BD%BF%E3%81%86%E3%81%AE%E3%81%AF%E3%82%84%E3%82%81%E3%81%9F%E3%81%BB%E3%81%86%E3%81%8C%E3%81%84%E3%81%84

[PHP] Twitter bot開発者のための参考サイトまとめ

公式サイト

Twitter
https://twitter.com/

Twitter Developers
https://dev.twitter.com/

Twitterのルールや制限など

Twitterヘルプセンター | フォローに関するルールと留意点
https://support.twitter.com/articles/251786-#

Twitterヘルプセンター | Twitterリミットについて(更新、API、DM、およびフォロー)
https://support.twitter.com/articles/249071-twitter-apidm

Twitterヘルプセンター | Automation rules and best practices
https://support.twitter.com/articles/76915-automation-rules-and-best-practices#

PHPライブラリ

abraham/twitteroauth · GitHub
The first PHP Library to support OAuth for Twitter’s REST API
https://github.com/abraham/twitteroauth

プログラミング参考サイト

PHP + OAuthで Twitter botをつくってみよう – PHP入門 – Webkaru
http://webkaru.net/php/twitter-bot/

Twitterを100倍楽しむためのbot開発基礎講座:連載|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/twitterbot

PHP+OAuthでTwitter – SDN Project
http://www.sdn-project.net/labo/oauth.html

PHP+OAuthでTwitterのBotを作ってみる – SDN Project
http://www.sdn-project.net/labo/twitter_bot.html

Twitter API v1.1 で自動フォロー返し機能を実装する : プログラミング for ツイッタラー
http://twitterer.blog.jp/archives/1482724.html

bot開発物語 その7(最終回)―自動フォロー返し― | おくみん公式ブログ
http://blog.okumin.com/archives/twitter-bot-7

[PHP] 相互リンクされていないフォロワーをアンフォローするTwitter bot

今回もTwitter botネタ。今回は相互リンクしていないフォロワーを自動アンフォローする機能。

相互フォローとは

自分が相手をフォローしていて、相手も自分をフォローしてくれている状態。

自動アンフォローの原理

  1. 自分をフォローしている人(フォロワー)のリストを取得 (Twitter API: followers/ids)
  2. 自分がフォローしている人(フォロー)のリストを取得 (Twitter API: friends/ids)
  3. 2つのリストをぶつけて、自分はフォローしているけど自分をフォローしてくれていない人を特定。
  4. 特定した人をアンフォローする (Twitter API: friendships/destroy)

サンプルコード

[PHP] 自動フォローバックするTwitter bot

昨日作成したTwitter botをいじっているんだけど結構面白い。今回は自動フォローバックを実装したので覚え書き。

自動フォローバックとは

自分をフォローしてくれているんだけど、自分からはフォローしていない人を自動的にフォローする機能。リアルタイムじゃなくてcronを使って周期的に処理することで実現する。

自動フォローバックの原理

とても原始的。

  1. 自分をフォローしている人(フォロワー)のリストを取得 (Twitter API: followers/ids)
  2. 自分がフォローしている人(フォロー)のリストを取得 (Twitter API: friends/ids)
  3. 2つのリストをぶつけて、自分はフォローしていないけど自分をフォローしてくれている人を特定。
  4. 特定した人をフォローする (Twitter API: friendships/create)

サンプルコード