tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン開発を承ります。ご連絡はこちらのホームページからお願いいたします。

php

PHPの簡易デバッグ関数

php

とりあえず。

PHPのDOMDocumentでHTML→XMLに再構築する方法

php

PHPのDOMDocument、なかなか戦えるじゃないか。空タグ(<br/>とかね)をappendChildすると、そのままDOMTextみたいにつなげてくれるっていうのは知らなかった。Nice!ということでサンプル。 次のHTMLを HTML/body/table/td[@class=pagebody]のDOMだけ取り出して</br/>…

PHPのDOMDocumentがバイナリセーフよりさらに脆いものだった件

php

結論から言うと、DOMDocumentは、「改行」「タブ」「キャリッジリターン」以外のコントロールコードが入っていると、それ以降の文字列を無視してしまう。ちなみに、バイナリセーフでないと叩かれているereg系はヌルバイトだけを切ってしまう。なんという脆さ…

NFSでのflockにはまる

php

http://php.net/flock flock() は NFS 及び他の多くのネットワークファイルシステムでは動作しません。 詳細についてはオペレーティングシステムのドキュメントを確認ください。 この動作しませんっていうのが、なんというか、固まったまま動かないんよね・…

POSTした生のデータがほしいとき

php

PHPは <input name="foo[123]"> <input name="foo[123]_bar"> ってあった場合、$_POSTとしては$_POST[foo]しか返ってこない。まぁ、あんまないけど、とりたい場合はfile_get_contents('php://input');を使う。で、もうちょっと

WordPressで全角をAND検索にするプラグインが無いから適当に書いた

php

もー、これがどういう動きを及ぼすかよ―分からんけど、 query_vars['s']; $s = str_replace(' ', ' ', $s); $wp_query->query_vars['s'] = $s; $wp_query->query['s'] = $s; } って感じ。うごけばいいやー(ぼうym

PHPExcel使ってて、必要になったAAを27にする関数

php

=0; $i--){ $seek = strpos($abc, $str{$i}) + 1; $num += $seek * pow(26, $counter) ; $c…

ウケタコード@WordPress

php

do_action('retreive_password', $user_login); // Misspelled and deprecated do_action('retrieve_password', $user_login); ウケルわー。

PEARのServices_Twitterのupdate_profile_imageでどハマリこいた件

php

Services_Twitter、使いやすいんですが、プロフィール画像の変更で大いにはまりました。いやぁ、こんなの account->update_profile_image(array('image' => $new_icon)); で余裕だぜ・・・とか思ってました。それまでも、ツイート更新したり、ユーザー情報を…

FTPの「mkdir -p」版

php

Warningは避けられないので、気になる人は@で抑制してください。

PHPで配列を再帰的にマージしてくれる関数

php

設定値を配列にしておいて、ある一部分だけ上書きしてしまいたい場合。 普通にarray_merge使うと、小回りが利かないですよね。ということで、こんな関数。 $e_value){ if (!array_key_exists($e_key, $origin)){ $origin[$e_key] = $e_value; } else { if (!…

PHPで最小限のls -laを書いてみた

php

オプションは、rauth1に対応で。ファイルのパーミションは、PHPマニュアルをそのままコピペしたんだけど、手元だとシンボリックリンクがうまく出ない・・・・。うーん、意外と面倒・・・・。つかコード長いし。Ref: 最小限のls -laを書いてみた - Islands in…

Ethnaの選択肢妥当性チェックプラグイン

php

Symfonyでchoiceっていうのがあるので、Ethnaでも同じように。 ActionFormのフォーム定義 ありがちなこんなの。Smartyのプラグインでレンダラー使ってる人はform_optionsを適当なものに差し替える。以降のでも同じ操作必要だけど。 array( 'name' => '状態'…

ひらがなカタカナ両方OKの正規表現

php

preg_match系 /^((\xe3(\x81[\x81-\xbf]|\x82[\x80-\x93]|\x83\xbc))|(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)))*$/ メモ

get_classの引数がNULLの時の仕様で嵌った件

php

デバッグ時にget_classを良く使うのだけど。 http://jp2.php.net/get_class 返り値 オブジェクト object がインスタンス であるクラスの名前を返します。object がオブジェクトでない場合にはFALSEが返されます。 クラスの内部で object を省略すると、 その…

Gitの差分ファイルを抽出するPHPスクリプト

git diff --name-onlyで取得するファイルを任意の場所にまとめてコピーするスクリプト。なんか、gitのコマンドでサクッと取れてパッケージしてくれるだろうと思ったらそこまでしてくれなかったので作った。git diffで比較した差分のファイルだけを抽出するス…

proc_openの64kbの壁「slymak、それfile_get_contentsネタやない、proc_openや」

php

PHP Advent Calendar jp (day 15)PHPerのみなさんならちょっとしたバッチやファイル操作なんかも全部PHPで書いてるPHP脳になってることと思います。もうShellScriptなんて古臭いものは使ってないことでしょう。そんな時、システムコマンド使う時に大活躍する…

Smartyの改行について調べてみた

php

PHP自体もですが、Smarty使っててあー、この{/if}の終わりの改行って表示されんのかな?とか結構気になる時があります。普通にHTMLなら問題ないのですが、メールテンプレートとして使った時です。ということで、調べてみました。 実行するテストスクリプト t…

PHPでsystem()を走らせたときに、エラーメッセージも取得する方法

php

システムコマンドを使ったときに、エラーメッセージってどうやって取得するんだろう?? ・・・と、PHPのシステムコマンドのマニュアルを見ても出ない。そういう時は、プロセスをちゃんとみるproc_openを使う。 http://jp.php.net/manual/ja/function.proc-o…

WordPressにおけるXMLRPCの開発・・メソッドの増やし方とか

php

WordPressのXMLRPCメソッドの一覧を増やしたくなった。とりわけ、ページの全削除をしたくなった。 とりあえず、XMLRPCクライアント http://www.fabrice.co.jp/blog/download/win32-gui から、XMLRPCクライアントをダウンロード。これが無いと面倒すぎる。よ…

PEARのXML_RPC2が文字化けする件

php

WordPressのAPIをたたいてて困った。投稿するとどうしても文字化けする。んー、って思って、XML_RPC2をデバッグモードにしてみた。すると <value> <string>API&#227;&#131;&#170;&#227;&#13.......;&#154;&#227;&#131;&#188;&#227;&#130;&#184;</string> </value>みたいな感じなXMLを投げてた…

興味のある言語にSSIと書いておいたら面接で爆笑された

php

extends http://d.hatena.ne.jp/moriyoshi/20100204/1265242273 PHPエンジニアを募集してるSNSを運営してる会社の採用面接を受けた時の話。転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。 CSS/HTML/Flas…

JanRain OpenID Libraryでgoogle OpenIDからGmailのデータをいただく。

php

examples/consumer/try_auth.php のコードにはなかったAXでやってみる。GoogleはAttribute eXchangeでgmailが得られるらしいので。ちなみに、JanRainは、define('Auth_OpenID_VERSION', '2.1.2'); です。 try_auth.php 23行目らへんから begin($openid); + r…

mb_convert_variableにハマる。

php

mb_convert_variableを通した後は、配列のポインタが無くなるようです。つまり、 '固定長フィールド', 'bar' => 'CSVファイル', 'baz' => 'コンピュータ', ); var_dump(key($array)); // => foo mb_convert_variables("SJIS", "UTF-8", $array); var_dump(k…

PEAR Archive_Tarのエラー出力

php

なんでかしらんけど、extract()でエラー。こうすれば、エラーが画面に出る。つか、PEARの基本的な使い方だけどいまだに全くその辺のPEARの使い方を知らなかったのは内緒。 extract($target_dir);

添付メールの自動処理をPHP噛ませてやらせたら、PipeでつないでuudeviewにやらせるよりPHPでデコードした方が速かった件

php

昨日の続き。Propmailでメールの添付ファイルを自動処理させたいんだけど、添付されたファイルをデコードするのにPHPでやった方がいいか、uudeviewという外部システムを使ったやった方が良いかっていう。 とりあえず、PHPのみで完結させる場合 PHPでやる場合…

fwriteでPHPが落ちる?エラーログなし・・・

php

ハマり中。メールの自動処理をEthnaのCLIでやろうとして、procmailにて引っかけたんだけど、どーも動かない。ErrorログはFILEで取ってるんだけど、これが出ない。ていうか、procmailを通さないでフツーにPHP-CLIで動作させたら何の問題もなく。 引っかかるの…

配列をある配列で一部分だけ上書きしたい場合

php

ある設定配列$configがあるとして、携帯用に$mobile_configってのがあって、だけどその$mobile_configには、$configとの「差分だけ」を書きたいって場合。 array( 'news' => 10, 'article' =>10, 'member' => 10, ) 'dsn' => 'mysql://hoge:hoge@localhost'…

PHPのvar_exportが便利ですごすぎる。

php

PHPには、コード中で使ってる配列を文字列にしてくれるvar_exportという関数があります。これ、その場でechoしちゃうんでob_*使わないとアレなんですが、便利です。何が便利かって、他の人がライブラリ的に作ってくれた長々とした配列で、自分の欲しいところ…

Oracleドライバを入れる

php

CentOS5で。ExpressEdition(Oracle Database 10g Release 2 (10.2.0.1))は、OracleのサイトでRPMで提供されているのでサクッとrpm -ivhでインストール。PHPで使うので、Peclのoci8ドライバを入れる。その前に、 http://www.oracle.com/technology/software…