-
1:ID:.7glv/ · 2018-08-03

#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 件の回答

2:ID:0SQad4 · 2018-08-03

returnしてないからじゃない?
全文書いてないと思うから推測だけど

3:ID:2qrKwA · 2018-08-03

str_replace( $search, $replace, $hoge);
って、$hogeの中の$searchを$replaceに置換する関数ですけど、そもそも$hogeに値が設定されいないですよー。

$_POST['hoge']

$hoge
は全然別のものなので、
$hoge = $_POST['hoge'];
って1行書いてやれば、動くようになるのではないかと。

4:ID: · 2018-08-03

Re:3
有難うございます。
引数に$hogeを設定し、実行時に
comment_validation($_POST['hoge']);
とすることで、$hogeに$_POST['hoge']が代入されるようにしたのですが、この認識が間違っているのでしょうか。。

5:ID: · 2018-08-03

Re:2
有難うございます。
returnについて勉強してみます><

6:ID:2qrKwA · 2018-08-03

Re:4
あ、見落としてました^^;
確かにそうですね。

うまく動作した、動作していないっていうのは、どうやって判断していますでしょうか?
どこかでechoとかしているのでしたら、そこまで含めて書いてもらえるとわかりやすいですー。

8:ID: · 2018-08-03

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文字以内です。と表示される、という具合です。
質問の仕方も初心者で、申し訳ございません。
温かなお返事、心より感謝いたします。

9:ID:0SQad4 · 2018-08-03

Re:5
とりあえず関数の最後でreturn $hogeして、
var_dump(comment_validation($_POST['hoge']));ってしてみたらいけそうなきがする。

10:ID:SVOaQS · 2018-08-04

久しぶりに暖かいトピを見た。
トピ主頑張れ。みんな優しくていいね。

11:ID:K0AoIw · 2018-08-04

参照渡しと値渡し、あるいはスコープの説明をする必要があるから、初学者にわかりやすく説明するには、phpにわかでは難しい課題だぞ。

1 件の回答が除外されました。[詳細]
コメントの受付は終了しました。

一緒に読まれている質問

ページ上部に戻る