dポイントプレゼントキャンペーン実施中!

入力画面(HTML)で都道府県をセレクトボックス
で入力したいんですが、入力画面のHTMLに北海道から沖縄まで書くのは大変だし、
もしかしたらエリアを限定するかもしれないので
外部ファイル(例:area_data)にカンマ区切りで北海道から沖縄まで書いたものを
optionの部分に入れたいと思います。
Perlでやるとこんな感じで出来たんですがこれをPHPでやるにはどうすればいいのか教えてください。
ただ単にPerl(の関数)をPHPに直すだけでできるものなのでしょうか?


----------------Perl(sample.cgi) mode:new---------------------------

##=====================
## 都道府県の設定 =
##=====================
if(!open(DATA,$area_data)){ &error('システムエラー','エリアデータファイルをオープンできません。'); }
@area_data = <DATA>;
close(DATA);
@area = split(/,/,$area_data[0]);
foreach(@area){
$option_val .= qq|<option value="$_">$_</option>\n|;
}

##===============================
## マクロリファレンス置き換え =
##===============================
foreach(@html){
s/_%option_val%_/$option_val/g;
}

##=========================
## 入力画面HTML 出力 =
##=========================
print <<"EOF";
Content-type: text/html

@html
EOF
exit;
}


---------------入力画面html------------------------------------------
<form name="form1" method="post" action="sample.cgi">
<input type="hidden" name="mode" value="new1">
<select name="address_a">
_%option_val%_
</select>
</form>
---------------Perl(sample.cgi) mode:new1----------------------------

入力確認画面のHTMLを開く

##===============================
## マクロリファレンス置き換え =
##===============================
foreach(@html){
s/_%address_a%_/$param{'address_a'}/g;
}

##=========================
## 入力確認画面HTML 出力 =
##=========================
print <<"EOF";
Content-type: text/html

@html
EOF
exit;
}


---------------入力確認画面html----------------------------------------
<form name="form1" method="post" action="sample.cgi">
<input type="hidden" name="mode" value="new2">
<input type="hidden" name="address_a" value="_%address_a%_">
_%address_a%_
</form>

A 回答 (1件)

スタティックなHTMLをわざわざオーバーヘッド発生させてプログラム


処理する意味があるかどうか疑問ですが・・・

まず、外部ファイルは読み込みだけならわざわざファイルI/Oで
開いたり閉じたりすることもなく
file_get_contents()などで十分、例示のソースになぞらえると

<?
$fname="prefecture.txt";
$str=file_get_contents($fname);
$area = split(",",$str);
foreach($area as $val){
$option_val .= "<option value=\"{$val}\">{$val}</option>\n";
}
?>

みたいな感じ

ヒアドキュメントはPHPでもつかえるので、処理的にはほぼ
同等のことはできると思います。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
おかげさまで何とかなりました。

>スタティックなHTMLをわざわざオーバーヘッド発生させてプログラム
処理する意味があるかどうか疑問ですが・・・

確かにそうなんですよね。まぁ元にあるプログラムでは
テンプレート(HTML)と処理部分(PHP)は完全に分けて作ってるからなんですかね。

お礼日時:2009/10/23 16:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!