#php
ABCをabcに変換する関数を練習のために作ったのですが、動作せず、困っております。
function comment_validation($hoge) {
//コメントがPOSTで投稿されたときに実行
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//文字の変換
$search = array( "A" , "B" , "C");
$replace = array( "a" , "b" , "c");
$hoge = str_replace( $search, $replace, $hoge);
}
}
comment_validation($_POST['hoge']); //結果、ABCはabcに変換されない
上記のコードが動作しない原因を、どなたかご教授頂けましたら幸いです。
ちなみに、関数にせず、以下のようにした場合はうまく動作しました。。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//文字の変換
$search = array( "A" , "B" , "C");
$replace = array( "a" , "b" , "c");
$_POST['hoge'] = str_replace( $search, $replace, $_POST['hoge']);
}
なぜなのでしょうか。。
一緒に読まれている質問
10 件の回答
returnしてないからじゃない?
全文書いてないと思うから推測だけど
str_replace( $search, $replace, $hoge);
って、$hogeの中の$searchを$replaceに置換する関数ですけど、そもそも$hogeに値が設定されいないですよー。
$_POST['hoge']
と
$hoge
は全然別のものなので、
$hoge = $_POST['hoge'];
って1行書いてやれば、動くようになるのではないかと。
Re:3
有難うございます。
引数に$hogeを設定し、実行時に
comment_validation($_POST['hoge']);
とすることで、$hogeに$_POST['hoge']が代入されるようにしたのですが、この認識が間違っているのでしょうか。。
Re:2
有難うございます。
returnについて勉強してみます><
Re:4
あ、見落としてました^^;
確かにそうですね。
うまく動作した、動作していないっていうのは、どうやって判断していますでしょうか?
どこかでechoとかしているのでしたら、そこまで含めて書いてもらえるとわかりやすいですー。
Re:6
再度お返事有難うございます。
comment_validation($_POST['hoge']);
とすることで、$_POST['hoge']経由で送られた文字列がデータベースに登録されるときにはABCではなくabcになるようにしたいのですが、そのままABCと登録されてしまう具合です。
ちなみに、functionの中身を
function comment_validation($hoge) {
if ( mb_strlen( $hoge) < 10 ) {
wp_die( '「hoge」の項目が10文字以内です。' );
}
}
comment_validation($_POST['hoge']);
というふうに、str_replace以外を使用すると、想定通りの動き=画面に「hoge」の項目が10文字以内です。と表示される、という具合です。
質問の仕方も初心者で、申し訳ございません。
温かなお返事、心より感謝いたします。
Re:5
とりあえず関数の最後でreturn $hogeして、
var_dump(comment_validation($_POST['hoge']));ってしてみたらいけそうなきがする。
久しぶりに暖かいトピを見た。
トピ主頑張れ。みんな優しくていいね。
参照渡しと値渡し、あるいはスコープの説明をする必要があるから、初学者にわかりやすく説明するには、phpにわかでは難しい課題だぞ。