• ベストアンサー

CGIで何%の指示の仕方

CGI勉強中です。 表の中に文章を表示させるのですが、表の幅が狭い場合、自動改行によりとデザインが崩れてしまうのを防ぐためif文で分岐させています。 ----------------- if ($all_width(表の全幅) >= "xxx") {1行で表示} else{2行<br>で表示} -------------------- といった感じです。 でも、この場合、$all_width を%で指示した場合、もちろん100以下なので2行表示してしまいます。 で、もうちょっとカスタマイズして、 ----------------- if ($all_widthに%が使われていたら) {   if ($%使用時の行指定==1){1行で表示} else{2行<br>で表示}   } else{ if ($all_width >= "xxx") {1行で表示} else{2行<br>で表示} } ----------------- こうしたいのですが…文法的におかしくは無いですよね。 で、この「$all_widthに%が使われていたら」という表現方法がわかりません。 何か良い方法は無いでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.2

No.1さんの回答通り正規表現を使うと良いと思います。 if ( $all_width =~ /\%/ ) { ... 上記は、$all_widthの値に%という文字列がある場合にtrueを返します。 $all_widthに数字と%しか使われない事が前提で、更に%が文字列の最後にある場合の正規表現は以下のような感じになります。 if ( $all_width =~ /\d+\%$/ ) { ... 正規表現は慣れるまでに多少時間がかかるかもしれませんが、 便利なのものなので覚えておくといいと思いますよ。

master-3rd
質問者

お礼

ありがとうございました。上記方法で無事分岐が出来ました。

その他の回答 (1)

noname#199778
noname#199778
回答No.1

私もPerl/CGIの勉強中ですが… 正規表現で「%」の有無を拾ってはいかがでしょうか。 あまりきれいなソースではないかもしれませんが… $_= $all_width; if (m/\%/){   if ($%使用時の行指定==1){1行で表示} else{2行<br>で表示}   } else{ if ($all_width >= "xxx") {1行で表示} else{2行<br>で表示} } このような感じにすれば、$all_widthの中の文字列に「%」が含まれているかどうかを正規表現で判定して、含まれている場合には前者の、そうでない場合には後者の処理に分岐すると思います。 見当違いでしたら、ごめんなさい。

master-3rd
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう