入力内容の確認を行う前に$_POSTの入力値の前後から半角及び全角の空白を取り除きたい。
一つのファイルでフォームへの入力及び入力内容の確認ができるファイル(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>
/////////////////////////////
よろしくお願いします。
お礼
ありがとうございます。 >文字コードの問題 もとのFORMをこの電話番号だけにしてみるとデータをとることが出来ました。 結局何が原因で出来なかったかわからないままですが、 ご忠告に従って仕様の変更をしたいとおもいます。