■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

read.cgi改良スレッド

891 :デフォルトの名無しさん :01/09/09 14:31
とりあえずの行末の空白削除(タグ消し)対策
ressplitter_split()の、case ' ':
-  if (bufp == *This->buffers) /* 名前欄が半角空白の場合 */
-   *bufp++ = ' ';
+  if (bufp == *This->buffers /* 名前欄が半角空白の場合は最低1文字必要 */
+   || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
+   *bufp++ = ' ';
/*
resnumberのチェックを外せば名前・メール欄の
直後の空白もある程度消せるようになるが、
厳密に判定しないと(名前欄が)でこぼこに
なってしまうので、もう少し待ち。
*/
転送量的には、"名無しさん"の"ん"の直後の空白が(今のままでは)
削除できないのが痛い(3byte前から調べれば削除できる)ので、
空白が必要かを完全に判定する厳密なルーチン
(末尾から調べ、長くても数文字で終わるはず)を作成予定。
名前とメールの直後の空白が消せるし、
<br>前の空白もまだ結構残っているので、
処理を少し複雑にしてでもやる価値はあると見る。

もう一点。
index.htmlに合わせる場合、
メール欄が"0"の場合は""として扱うほうが良いのかな、と。
その場合、
splitting_copy()の最後に、
+ if (s[1][0] == '0' && s[1][1] == '\0')
+  s[1][0] = '\0';
つければOK。
以上は、http://teri.2ch.net/accuse/dat/994071363.datを出力して動作確認。

http://teri.2ch.net/test/read.cgi?bbs=accuse&key=994071363&st=448&to=449
の問題は、dat内に'&','<',"http://"が現れるたびに直前の文字をチェックして
' 'を入れるか判定する必要がある割には、実際に壊れている割合は非常に少なく、
費用対効果の点で疑問が残るので、OFF推奨のconditionとして実装予定。

335KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30