読者です 読者をやめる 読者になる 読者になる

高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

新しいものいろいろ

今日はJavaScriptPHP――正規表現についての勉強か。試験前ですが試験勉強はなし。
JavaScriptのほうは、テキストボックスの文字列を操作するコードの勉強。まずは手始めに、はてなダイアリーの編集ツールバーにあるボタンを変えてみようと思います。
あたりが参考になりそうですから、それをクラス化して使ってみようと思ったのですが…。そう簡単にはいかないですね。どこをどう間違えたのか、テキストエリアの全文が置き換えられちゃったりして…。
createTextRange?関数あたりが鍵のようですね、多くのブラウザに対応するなどといわなければ、後はちょっとだけで済むみたい。
あとは、未知の関数document/evaluate。どうやらHTMLからXPathでタグを得ているようですが…?引数の意味が分かりませんね。
あーあ、DOM系に詳しいJavaScriptのリファレンス、そろそろ欲しいな。


続いてPHP――正規表現です。今まで、一行ごとにpタグで囲むという処理は

$text = preg_replace("/^(?!-|\+|\*|\.|<|>|:| |\s)(.+?)$/m", "

$1

", $text);

という正規表現でやってきたんですが、これだと複数行にまたがるブロックタグなどが、正規表現で処理する前に置かれてると困ってしまいますね。解決するには根本的に考え方を変えるしかないようですね…。
text-hatena.js 公開 [てっく煮]にもありましたが、はてなは一行ごとに複数のクラスが走査して、マッチするかどうかを確かめているみたい。だからたかが一つの記事のために10近いクラスがあったわけですね。
正規表現一行で一つの構文をすませるのだから、理論上はこっちのほうが早いはずですが…。


たしか、Perl正規表現雑技のページかどこかに、「タグ外にマッチ」という表現が乗ってた気がする。それが参考になるかもしれない・・・っと。


やっぱり、まだまだやることは多そうです。結局Nucleusプラグインも後に三個作る必要が出てきそうですし。まあ、楽しいですけど、なかなか大変です。