アプリ版:「スタンプのみでお礼する」機能のリリースについて

一つのファイルでフォームへの入力及び入力内容の確認ができるファイル(enter.php)を作成しているのですが、入力内容の確認を行う前に入力値の前後から半角及び全角の空白を取り除きたいです。

しかし、半角及び全角の空白を取り除く部分でプログラムが動作しなくなり、なぜかわかりません。具体的には、以下の部分が問題です。

//入力された値の前後の全角及び半角スペースを取る関数。
function remove_space(&$value)
{
$value = preg_replace('/^[  ]*(.*?)[  ]*$/u', '$1', $value);
}
及び
//下記で入力された値の前後の全角及び半角スペースを一気に取り除きたい(ここが問題。)。
array_walk($_POST, 'remove_space');
の部分です(これらの部分を取り除くとプログラムは問題なく動作します。)。

どうやら、function remove_spaceの部分よりもarray_walk($_POST, 'remove_space');
が間違っているようなのですが、どこが悪いかわかる方おられますか?

一様、一通りのコードを下記へ載せておきます。
/////////////////////////////enter.phpファイル
<?php
session_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<?php
//入力された値の前後の全角及び半角スペースを取る関数。
function remove_space(&$value)
{
$value = preg_replace('/^[  ]*(.*?)[  ]*$/u', '$1', $value);
}

if (isset($_POST['confirm'])) {
$isErr = false;

//下記で入力された値の前後の全角及び半角スペースを一気に取り除きたい(ここが問題。)。
array_walk($_POST, 'remove_space');

if (strlen($_POST['my_name']) == 0) {
$isErr = true;
$error_person = '名前を入力してください。';
}
if (strlen($_POST['hobby']) == 0) {
$isErr = true;
$error_person = '趣味を入力してください。';
}
if (strlen($_POST['school']) == 0) {
$isErr = true;
$error_person = '学校を入力してください。';
}

if (!$isErr) {
$_SESSION['input_data'] = $_POST;
header('Location: https://www.example.com/mail.php');
exit;
}

}
?>

<form action="enter.php" method="post">
<input type="text" name="my_name">
<input type="text" name="hobby'" >
<input type="text" name="school">
<input type="submit" name="confirm" value="確認画面へ進む">
</form>
</body>
</html>
/////////////////////////////

よろしくお願いします。

A 回答 (1件)

単に文字コードをutfにしていないとかいうオチはありませんか?


普通に動いているみたいですけど・・・・

array_walk($_POST, 'remove_space');の行の前後に
var_dump($_POST);を入れてい見ると動作は確認できます
    • good
    • 0
この回答へのお礼

yambejpさん
ご回答、ありがとうございました。

>普通に動いているみたいですけど・・・
確認できました。なぜ動かなかったのか理由はわかりませんが、現在はちゃんと動作しています。

お礼日時:2009/12/24 23:26

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