※ ChatGPTを利用し、要約された質問です(原文:入力内容の確認を行う前に$_POSTの入力値の前後から半角及び全角の空白を取り除きたい。)
PHPファイルでの入力内容の前後の空白の取り除きに関する問題
このQ&Aのポイント
入力内容の確認を行う前に入力値の前後から半角及び全角の空白を取り除きたいが、プログラムが動作しなくなる問題が発生している。
半角及び全角の空白を取り除く関数が間違っている可能性があり、特にarray_walk()の部分が問題の可能性がある。
具体的なコードも提示されており、array_walk()の部分を取り除くとプログラムは問題なく動作する。
入力内容の確認を行う前に$_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>
/////////////////////////////
よろしくお願いします。
お礼
yambejpさん ご回答、ありがとうございました。 >普通に動いているみたいですけど・・・ 確認できました。なぜ動かなかったのか理由はわかりませんが、現在はちゃんと動作しています。