サーバー側でのdom操作は難しかった…

ブラウザ操作でページを作るアプリケーションを作っている。だいぶ良い感じに仕上がってきた。
次は保存をして、呼び出して、次回からも編集の続きができるようにしなければならない。
それは同時に「公開用」のページを作るために必要な機能だ。

まずはphp側で正規表現を駆使して操作をしようと思ったけれども、さすがに煩雑だし、デザイン崩れの原因を産んでしまうかもしれないと危惧をした。そこでphpでdom操作をするという方法を思い立つ。いくつかライブラリーは見つかった。その中で「jQueryのように操作できる」という「phpQuery」が便利そうなので使ってみる。

https://code.google.com/p/phpquery/

だが、セレクターの単語単位検索(jQuery=> ~= )に対応していない。しかもソースを見てて明らかなバグも放置された状態なのだ。2009年から更新されておらずバージョンも0.95で止まってしまっている。

そこでさらに検索をしてみると「php.query」というを発見した。定期的に更新されていて便利そうだ。恐らく考え方は一緒で「jQuery」のように扱えて単語検索も対応している。

https://github.com/wirexmedia/php.query

ところが「単語検索」がヒットしない。ソースを見てみると単語が半角英数に限定されていて記号を含めているとだめなようだった。そこでソースを書き換えて対応。さらにhtmlを内部的にxmlとして処理しているので、閉じタグ忘れや<br>タグなどを<br />になっていない場合は途端に止まってしまう。
止まるというのは、ハングアップ。どうやら上記のようなdom生成が失敗した場合の処理時に「ファイルがない」というエラーになる。これは明らかなバグなんだけどファイル自体がないのだから対応は難しそうだ。

ということで悩んだ末、全て操作する側のブラウザ内で呼び出された時に再生成する方法に切り替えることにする。さらに公開用のソースを作れるようにしよう。気になるのはブラウザによって微妙に挙動が使うし、余計なコードが追加されてしまうことがあるので、それらにどのように対応するから考えなければならない。特にプラグインなどで余計なソースを追加する奴は厄介だ。

取り敢えずやってみよう。