ダウンロード:SimpleXMLによる掲示板ソフト Xmlbulletin – PHP5.2


PHP5.2上で動作するXMLを使った電子掲示板ソフトを公開します。SimpleXMLを使っています。あまり大きなファイルは扱えないですが、この記事の中で述べるような方法で「拡張クラス」を作ることで柔軟にいろいろなXMLフォーマットに対応させることができます。各HTMLフォーム要素が使え、入力バリデーションも提供しています。また、Cookeiやセッション、JavaScriptを使用しないので携帯電話などでも利用可能だと思います。バグ報告、ご要望などはコメント欄やメールでお寄せください。
続きを読む

SimpleXMLのオブジェクトを編集、削除するときハッシュしたい


あるXML要素のオブジェクトを編集、削除するとき、単純にそのポジションとなる配列の位置をフォームから処理する側へ渡せばいいわけだけれど、プログラミング上はやっぱり位置だけでは不安で、その編集あるいは削除対象のデータがフォームで表示しているのと同じものなのかを編集・削除の処理のところで確認したい。

そのオブジェクトにIDとなるユニークな文字列があるという前提にするわけにはいかない。かといって元のデータをそっくりそのまま別途に渡すものうっとおしい。

そこで、そのオブジェクトのデータを全てシリアライズした上でハッシュにかけた値を渡すようにする。このポジションとハッシュ値が渡った先で、もう一度そのポジションのオブジェクトを取得してハッシュし、これらのハッシュ同士が一致すればほぼ間違いなく当該のオブジェクトであるということでよいだろうという考え方。

しかし、PHPはオブジェクトから直接ハッシュはとれない。一旦、シリアライズする必要がある。しかし、シリアライズするにも、それはオブジェクトではだめで、少なくとも配列にしておく必要がある。そこでオブジェクトを配列に変換してくれる関数が欲しい。
あった↓
simplexml elementを一括配列化。 | croisforce
本当に助かる。

PHP関数を埋め込んだ文字列の展開


たとえば、
$str = ‘tag:smallmake.com,{date(“Y-m-d”)},{uniqid()}’
とか
$str = ‘{date(“Y-m-d H:i:s”)}’
みたいに文字列の中に{}(中カッコ)で囲ったPHP関数を埋め込んで、これを展開するプログラムを考えてみました。

preg_replace_callback(‘/({.+?})/’,create_function(‘$proc’,’$func = substr($proc[0],1,strlen($proc[0])-2);eval(\’$res = \’ . $func . \’;\’);return $res;’),$str)

(どや顔(6_6))

ダウンロード:フォームメール – PHP5.2で


このソフトウェアはいわゆるフォームメールの機能を提供します。CookeiやPHPのセッション変数を使用しない仕様になっています。もしよければダウンロードして使ってみてください。バグ報告、ご要望などはコメント欄やメールでお寄せください。
続きを読む