バージョン | 1.4 |
---|---|
投稿者 | R34$0n. |
状態 | 提案 |
投稿日 | 2003-10-25 (SAT) 17:56:35 |
ニュースをかきたいのですが、簡単にニュースのindexページを更新するために
ページタイトルは、#ls2で抜き出せば良いのですが
本文から抜き出して表示されるプラグインは探したのですが見つかりません。
どなたか作っていただけませんでしょうか。
(もし既存しているのならどのようなプラグインか教えてください。)
ダブルバイトを正しく判定して、その文字数をとることは、phpのバージョンに依存すると思います。なので、バイト数は簡単でも、指定文字数をとる。というのは、難儀かなぁ。
なるほど。では文字数ではなくバイト数で抜き出したら、本文を引用すると言うのは可能ですか?
euc-jpやshift_jisの場合は全角と半角が2:1になるのでバイト数でも問題ないですね。utf-8の場合、3:1となるので同じバイト数でも全角文字が入ってると表示文字数がかなり短くなります。
本文を引用するプラグインを作ることは可能だと思いますが、適当なバイト数で切断するとその文字以降が化け化けになる可能性があります。それを防ぐために、切断部分の非文字をカットする処理を入れるか先頭から文字の並びだけを拾い出す必要があります。それは漢字コードに依存する処理なので結構手間だったり全く美しくなかったりするのです。このプラグインを作るかどうかは、その処理を自分で実装する元気があるかどうかにかかってるかと思います。
TrackBackの一覧を表示する際に、実はこのあたりを端折って実装したんでした。仕様上は、確か1024 255バイトを超過した場合は、...と表記だったと思うのですが、ライン読みして長さを足して、超過するまで処理を行うということで逃げました。入力した人にディペンドするわけです。この程度のものであれば、簡単に実装できると思いますが、文字数とかになると、shaさんが指摘されているように、切り方を間違えると、文字化けしちゃう。ということになります。
あとは、指定したページの最初が表組だったり、プラグインだったりしたらどうするか?表組の途中で切断しちゃったら?など、きっといろいろ考えて決めないといけませんよね。仕様決定にいろいろ自由度がありそうですし。また、文字数指定の場合でもプラグインを切断するわけに行きませんが、upkさんの実装方法だとその心配はなさそうですね。
単に文字数分とってくるなら、PHP関数:mb_substrでよいのでは?本体でも使ってますし。 それとも、何か問題があるんでしょうか?
なるほど、便利な関数があったんですね。それだと漢字対応は大丈夫そうですね。ただし、上では、それ以外の問題点の一部を挙げておいたのですが。
オリジナル文書をそのまま扱うので、表組みならパイプの文字で囲まれたまま。というものにしかなりません。テキストとして欲しいはずですから、convert_htmlしちゃうと、オリジナルよりも汚くなると思います。strip_wiki みたいな関数でも作れば、綺麗になるのかなぁ?
とりあえず、汚くなってもかまわないので取り出す関数を実装する。それとは別に 何もしない 「サマリー部を表す」インラインプラグインを作って*1 それで囲まれた所を取り出す関数も作る。で、サマリー部指定があるときにはそちらを取り出し、そうでないときは規定文字数を取り出すようにするのではどうでしょう?