- ベストアンサー
指定文字以降を表示させない
昨日に引き続いて連続質問になってしまい申し訳ありません KENT WEBさんのWEB PATIOの改造版を利用しているのですが、文字数制限がされていない?為、名前を長くし更にトリップを付けられると、スレッド一覧がこちらの想定しているデザインと異なるレイアウトになってしまう事があります Patio-FU http://patio-fu.plavox.info/ スレッド一覧表示はそれほど小さくせず、table幅を800に固定しています 長い名前+トリップ をスレ主、最終レス者が重なると、タイトル爛が小さくなり、長くないタイトルのスレッドでも2列になってしまう事があります 文字数制限は、フォームのtextareaに文字数制限をつける事で、なんとかしようと思っています ただ、やはりいくら制限した所で、トリップが着くとレイアウトが崩れてしまいます そこで、スレッド一覧ではトリップを表示させないようにしたいのですが、どう改造していいのかも検討がつきません… ログを見てみると、 <>やまだたろう◆Whe5Fvoki8o<> と記述されているので、◆以降を表示させないようにする のだとは思うのですが、指定した文字以降を表示させなくする方法というものをいくら探しても見つける事ができませんでした どなたか、ご教授頂けませんでしょうか? よろしくお願い致します
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 記事を3つのファイルに分けたりしてるみたいなので全部見てないですけど・・・ タイトルと名前には文字数制限がついているみたいですよ? タイトル(maxlength=30)、名前(maxlength=20) {patio.cgi 553行目,569行目) まぁ、確かに名前を長くしてトリップつけると半分(400)くらい使うみたいですけど・・・ スレッド一覧だけでトリップを表示しないのであれば patio.cgiの117行目くらい # スレッド表示 if ($p eq "") { $p=0; } $i=0; open(IN,"$nowfile") || &error("Open Error: $nowfile"); $top = <IN>; while (<IN>) { $i++; next if ($i < $p + 1); next if ($i > $p + $menu1); ($num,$sub,$res,$nam,$date,$na2,$key) = split(/<>/); の後ろに foreach($nam) { ($nam,$***) = split(/◆/);} foreach($na2) { ($na2,$***) = split(/◆/);} を入れ込むと表示しませんでした(***には適当になんか付けてください)
その他の回答 (3)
- maniacpapa
- ベストアンサー率64% (9/14)
Patio-FUを見ていないので,参考程度にごらんいただければ・・。 ◆以降を削除する(もしくは表示しないようにする)というのは結構面倒なのですが, "◆が出現したらそれ以前の文字を表示する"ということであれば,下記のような方法で実現することができます。 下記はPerlでの例です。 ################################# # 変数に対象文字列を格納する。 $tmp = '<>やまだたろう◆Whe5Fvoki8o<>'; # 検索を行う。 $tmp =~ /.*?(?=◆)/; print $&; 上記の検索を行っている部分ですが, ".*?"は . は 任意の一文字 * は 0回以上の繰り返し ? は 最短マッチ です。 また"(?=◆)"ですが, Perlの参考書には"0文字幅の先読み言明"と書かれています(なんのこっちゃ)。説明しづらいのですが,"/たろう(?=◆)/"とした場合に"たろう"の直後に"◆"が続く"たろう"にマッチするのですが,マッチした結果に"◆"を含みたくないときに使います。 よって,上記の行は 「先頭から数えて一番最初に"◆"が出てくるまで検索をし,なおかつ検索結果には"◆"を含めない」 という検索になります。 $&という変数は"特殊変数"と言われるもので,マッチした文字列全体を出力するときに使います。 応用してみてください。
補足
解答ありがとうございます 教えて頂いた事を参考にして色々と調べてはいるのですが、うまくいかないままになっています… もう少し調べてみようかとは思っているのですが、まだ未熟者ゆえ少しハードルがたかいです… 具体的な入れこみかたを知ってられる方がおられましたら、よろしくご教授願います
- yore917
- ベストアンサー率25% (13/52)
>スレッド単体で閲覧でする場合には、◆を含む、それ以降の文字を表示させたい テンポラリーファイルを作ってみてはいかがでしょうか?テキストやDBにデータを保存し、そこから読み出し、必要であれば削除 という形でうまくいくと思います。 学生なので簡単なやり方しか思いつきません・・・。
- yore917
- ベストアンサー率25% (13/52)
切り取るとか削除するとかすればできるんじゃないですか?PHPをメインにやってるのでCGIのことは詳しくないんですが・・・。おそらくPHPと変わらないと思って書き込んでいます。指定文字以降を削除すれば問題ないと思いますよ。
補足
お返事ありがとうございます スレッド一覧の表示時のみ、◆を含む、それ以降の文字を表示させたくないのです スレッド単体で閲覧でする場合には、◆を含む、それ以降の文字を表示させたいので、削除をしてしまうと、スレッド単体の閲覧でも消えてしまうような気がするのですが、私の解釈間違いかもしれません
お礼
お返事ありがとうございました まさに、理想とする表示になりました! 本当にありがとうございました