- ベストアンサー
Perl掲示板での半角英数字自動改行
初めて投稿させて頂きます。 Perlハンドブックを買って、ネットでも調べてみたのですがわからなかったので質問させて頂きます。 掲示板などで半角英数字(長文)の投稿があった場合 全角英数字に変換する。 という記述はあったのですが、半角英数字のまま表示し、 適当な場所で改行する。というのが見つかりません… 適当な場所というのは、掲示板の記事表示部分のテーブルの端に来ると改行という感じです。 自分でもまだ検索等してみますが、どうぞ宜しくお願いします
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
すみません.... $LOG_message =~ s/(\w{10})/$1<wbr>/g; でよさそうです # \dいらんかった~
その他の回答 (5)
- so_blue
- ベストアンサー率48% (50/104)
もう解決したかも知れませんが.... $LOG_message =~ s/([\d\w]{10})/$1<wbr>/g; はどうですか? 一応、localでは確認してるのですが.... 左辺の変数名が違ったりはしないですよね?
- so_blue
- ベストアンサー率48% (50/104)
すみません、記述ミス発見しました。 $value =~ s/([0-9a-zA-Z]{10})/$1<wbr>/g; ですね。 # 最初の(が抜けてたのは致命的でした
お礼
有難うございます!返事が遅くなって申し訳ありませんでしたっ PCが病院送りに陥ってました(T.T) 早速、記述してみたのですが、入れた場所が悪いのか、 改行してくれません・・・
- so_blue
- ベストアンサー率48% (50/104)
正規表現はまだ苦手なのですが.... $LOG_message =~ s/(<[^>]+>)|([-.!~*'()\w;\/?:\@&=+\$,%#\[\]\\^`"{|}]{10})/($2 eq '')?$1:"$2<wbr>"/egm; 右辺:(<[^>]+>)|([-.!~*'()\w;\/?:\@&=+\$,%#\[\]\\^`"{|}]{10}) タグ(<と>の間に1文字以上ある) or -.!~*'();/?:@&=+$,%#[]\^`"{|}か英数字が10文字以上 その場合はこれを実行 左辺:($2 eq '')?$1:"$2<wbr>" 書き直せば、 if($2 eq ''){ $1 } else { "$2<wbr>" } $1、$2というのは、確か「後方参照」で、 $1=タグ(<と>の間に1文字以上ある) $2=-.!~*'();/?:@&=+$,%#[]\^`"{|}か英数字が10文字以上 部分になります。 違ってたらごめんなさい。参考程度に。 閑話休題。 かなり強引ですが、 $value =~ s/[0-9a-zA-Z]{10})/$1<wbr>/gm; とかはどうでしょうか? 数字かアルファベットが10文字以上続いたら、<wbr>を入れます。 途中に記号が入っていると実行されません。 これを、HTML表示の前に入れるといいと思います。 そうするとログは入力された時のままで保存できますからネ
- so_blue
- ベストアンサー率48% (50/104)
半角英数字が途中で折り返さないのは、 英文の場合、単語の途中で区切りがあると意味が違ってくる場合があるからです。 故意に折り返しをしたい場合は、「改行してもいいだろう」とご自分で決めた英数字の後ろに <wbr>(任意改行)を入れてみてはどうでしょう? # 自分なら「/*-+.,」あたりかな? # でも顔文字とかがあると困ったな...
補足
so_blueさん有難うございます。 そうなんですよね・・・意味が違ってきてしまう・・・ <wbr>を自分で決めた英数字の後ろに入れる この記述方法がわからないのです=▽=) とあるお絵描き掲示板のCGIでは、コメントの中に 半角英数字があると、任意の場所で<wbr>を投入する記述を $LOG_message =~ s/(<[^>]+>)|([-.!~*'()\w;\/?:\@&=+\$,%#\[\]\\^`"{|}]{10})/($2 eq '')?$1:"$2<wbr>"/egm; この様に書かれていたのですが・・・ 前半は半角英数字を判断する記述・後半は任意の場所に<wbr>を入れる という記述なんだろう、というのはわかるのですが・・・ 普通の掲示板に記述する方法がわかりません(T_T) 文中にHPアドレスの入力があると、「こちら」という文字に置き換えする という術は施したので・・・・ HPアドレス以外で半角英数字を長々と書くなんて事は滅多にない事なので諦めかけております(_ _)
- riyop
- ベストアンサー率41% (7/17)
回答にはなってませんが、HTMLでも解決できると思います。 表示するときにテーブルなどで幅を決めてやると自ずから 改行されると思いますので、そういうふうにしてみてはいかがですか?
補足
riyopさん回答有難うございます。 CGIでのhtml部分のテーブル幅を決めても、 半角英数字は改行されないので半角英数字の 投稿があったテーブルだけがながーーく崩れてしまうのですー。
お礼
so_blueさん!!! 本当に有難うございますっ!!!!!!! 今、たった今!おかげさまで!解決しました!! 以前のコメントいただいてから、改行にならなくて・・・ 自分で必死にやってみたんですが出来ませんでした(T.T) 素晴らしいです!もぅ、感動の嵐です!! これで、レイアウト崩れも無く、表示させる事ができます 本当に、本当に有難うございました!!