tohokuaikiのチラシの裏

技術的ネタとか。

php

簡単なバックトレース

php

なんか毎回作ってる気がしたので、ぺた。

mpdfで日本語のフォントを追加したり、文字化けを回避したり

php

mpdfのバージョンは、5.4です。mPDFというHTMLをPDFに変換してくれるライブラリがあります。 素晴らしいのですが、おそらくこちょこちょとつぎはぎつぎはぎで*1コードがメチャ読みにくいのと、Configが散乱しててとにかく「デフォルトのフォント以外のものを…

PEARのConfigを再構築する

php

PEAR-localを使ってたのだけど、環境が変わってしまったためにpearコマンドが使えなくなった場合。http://wiki.poyo.jp/read/PHP/tips/pear/pear/rebuild_confから

Ethna2.5.0でEthna_View_Jsonができてたとか

なんかよくあれで、自前のView_Json作ってたのでハマりこいたのですが。パラメータを渡したい場合は、 $result)); みたいにすると渡せますよという話。

PHPの演算子の強さがどこまでわかってるかとstrposの返り値

php

1234567 => 1/234/567 みたいにサブディレクトリを切りたい時に文字区切りを入れるだけの関数

php

1 12=> 12 123=> 123 1234=> 1/234 12345=> 12/345 123456=> 123/456 1234567=> 1/234/567 12345678=…

生のUnicode文字をHTMLエンティティにする。

php

UTF-8一辺倒な最近は問題ないのですが、たまにレガシーな環境に行くとUnicode文字が出なくて困ります。で、HTMLエンティティがあるものはそっちにしてしまおうという関数。 array(), 'after' => array(), ); // #h-24.2.1 $j = range(160, 255); // #h-2…

今時のEthnaを使う

現時点でのEthnaを持ってきて使ってみる。 https://github.com/ethna/ethna/tree/release/2.6.0beta4ずっと2.5くらいだったので。 インストール pear-localを作る .htaccessでinclude-pathで上記のローカルPEARを含ませる EthnaとSmarty3をローカルPEARに設…

再帰処理でハマった話

php

再帰処理を書こうとするといつも悩みます。 「こんなにループさせていいんかいな?」と。そう思ったのがあだになった例を下記に記します。親子関係のある配列をソートさせたい場合、下記のコードでは、pidが親IDになります。で、これを再帰関数を使って親子…

PHPのDOMDocumentが内部エンコードで何をしているか

php

要するに、次のようなスクリプトを書いたら loadHTML($html); $html = $dom->saveHTML(); file_put_contents('sample_ddtest.html', $html); exit; sample_ddtest.htmlには、HTMLエンティティで記述された本文…

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クライアントをダウンロード。これが無いと面倒すぎる。よ…