![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> $aaa = テキストボックスaaaの値
> と言う感じで処理したいのです。
結論から言うと、テキストボックス(name=aaa)の値をphp側で変数名$aaa としてアクセスする方法は無いわけではありませんが、PHP4.2.0以降は設定を変更する必要がある他、以下のURLにある通りお勧めしません。
http://www.sound-uz.jp/php/tips/security.html
お望みの回答ではありませんが、こういう場合は配列変数を使うのが普通です。PHPの配列は $変数名["文字列"] という風に文字列を添え字として値にアクセスできます。そして幸運なことに、PHPでは$_POSTや$_GET 配列にPOST/GETデータを格納してくれています。
で、デザインファイル中の$xxx記号 を $_POST["xxx"] の値に置換するわけですが、xxxの部分は keys($_POST)で取り出す方法と、ファイル中の$xxx記号から抽出する方法の2通りが考えられます。デザインファイル中の文字列を$strに格納しているとすれば、
前者なら
foreach (array_keys($_POST) as $key)
$str = str_replace('$'.$key, $_POST[$key], $str);
後者なら
$matches=array();
preg_match_all("|\\\$([\w_][\w\d_]*)|s", $str, $matches);
//$matches[1]は上記正規表現にマッチした()部分を保持している
foreach ($matches[1] as $key)
$str=str_replace('$'.$key, $_POST[$key], $str);
という感じです。
一方、既に $aaa = $_POST["aaa"] 等して $aaaを用いてご自分で処理を色々書かれているのであれば、${"aaa"} として変数$aaaの値にアクセスできます。これを利用して
// $key="aaa"の場合 ${$key}(もしくは$$key)は変数$aaaの値を指す
foreach (array_keys($_POST) as $key)
$str = str_replace('$'.$key, ${$key}, $str);
とすることが出来ますが、この方法はあまり使われないと思います。
色々書きすぎて分かりにくいかもしれませんが、参考にして下さい。
No.3
- 回答日時:
なるほど、プログラムとデザインの分離ですね。
あらかじめ確認画面のHTMLファイルが用意されていて、そこにユーザが入力した値が表示されるところに、あらかじめ変数名が入っており、そのファイルを読み込んで変数を一括置換し、出力する、ということでしょうか。その確認画面を作成するロジックは複数のフォームから呼び出されるので、変数名も数も不定、ということですね。
PHPファイルの中では、$_POSTか$_GETで値を取得しているはずですが、
それをforeachで取り出してpreg_replace()に渡す配列を作ればできないでしょうか。
foreach ($_POST as $key => $value) {
array_push($patterns,$key);
array_push($replacements,$value);
}
としておいて、
preg_replace($patterns, $replacements, $str);
とすればうまくいかないですか?
No.2
- 回答日時:
なるほど、変数がいくつもあるのですね。
それなら preg_replace() で配列を引数に使う方法でできそうですね。
ただ、変数はどれくらいの数だけあるのでしょうか。
例えば、$xxx,$yyy,$zzz という変数がある場合、
$patterns= Array("/\$xxx/","/\$yyy/","/\$zzz/");
$replacements = Array($xxx, $yyy, $zzz);
としておいて、
preg_replace($patterns, $replacements, $str);
とする方法があります。
参考URL:http://jp2.php.net/manual/ja/function.preg-repla …
この回答への補足
再び回答ありがとうございます。
変数の数、名前ともは決まっておりません。
やりたい事としましては、
フォームがあってそこでサブミットされると確認画面に飛ぶ仕組みです。
フォームに例えばテキストボックス名「aaa」「bbb」「ccc」があったとします。
それを受け取りphpで$aaa = テキストボックスaaaの値
と言う感じで処理したいのです。
確認画面はHTMLで記述されており、
テキストaaaを表示するようにしたい場合$aaaと書いてあります。
プログラムとデザインの分離化の為このような仕組みになっております。
No.1
- 回答日時:
> あるファイルを読み込んで中に変数($xxx)が入っていたら
> 正規表現にて$xxxの値に変換する事は出来ますでしょうか?
上記の意図をいまいち理解できてないのですが、ファイルの中に $xxx という文字列があったら、それを $xxx の変数の値に置きかえる、ということですか?それならば、
str_replace("$xxx",$xxx,str);
でよくて、正規表現を使う必要性はないような気がするのですが、そういうことではないのでしょうか?
多分もっと複雑なことをしたいのだと思うので、補足をお願いします。
この回答への補足
回答ありがとうございます。
str_replace("$xxx",$xxx,str);
だと決まった変数しか対応出来ないのでと思います。
$xxxは例として書いただけです。ややこしくてすみません^^;
ham_kamoさんが回答してくれたstr_replace("$xxx",$xxx,str);
を$xxxのみだけでなくすべての変数にも対応させたいんですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- iOS Windows10 IME設定について 3 2022/04/07 16:20
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Java この世で連日正規表現について質問している阿呆は私くらいしかいないでしょう。本当にお世話になっています 2 2022/05/22 11:59
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- その他(コンピューター・テクノロジー) 正規表現の置換で数値を合計したいです。 2 2022/10/17 11:01
- 数学 正規数の定義で分からないことがあります。 正規数の定義について専門書において 「xがr進正規であると 1 2023/07/17 20:50
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Smartyでインクリメント
-
元号の表示
-
php 2つの配列の内、片方を元に...
-
多次元配列を、1次元の配列にす...
-
PHPで、'=>'の意味が分かりませ...
-
PHPでこのコード自体に意味は無...
-
SELECT 使用時の bindValue の...
-
3つの連想配列を交互に代入し...
-
マッチング処理(1:N)
-
思うような連想配列ができない・・
-
プルダウンメニューにDBの内容...
-
配列をループでたくさん宣言し...
-
[PHP] fputcsv()関数でファイル...
-
doxygenを使用する環境について
-
ヒアドキュメントの中のfor文
-
file_existsでファイル名の部分...
-
unset使用時の利点
-
php で1から100までの素数の表...
-
C言語 最大値と最小値を求めて...
-
String だと「 ByRef引数の型が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでこのコード自体に意味は無...
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
PHP、{}記号の意味
-
PHPで変数名にハイフンを使うに...
-
PHPで連想配列のプルダウンメニ...
-
VB.NET で 二次元のハッシュは...
-
多次元配列を、1次元の配列にす...
-
配列からプルダウン用のHTMLを生成
-
Smartyでインクリメント
-
phpでforeachの中にforeachがあ...
-
foreachとかの勝手な省略?
-
Excel VBAでフィルター後の対象...
-
foreachで配列を、左から縦3列...
-
$_POST受信で必要項目のみを結...
-
リストボックス複数選択抽出方法
-
POSTで渡されるデータの数がわ...
-
ftokが動かない?
-
foreachの間にテーブルの<TR>を...
-
3つの連想配列を交互に代入し...
おすすめ情報