发布到表时清除用户输入数据的空白

时间:2014-07-31 01:51:57

标签: php mysql regex

我正在尝试清除空白并添加一个' @'用户输入要发布到数据库的名称时的字符开头。

我已经有了一个允许用户输入数据并对其进行修改的工作脚本,但我希望包含一个清空空格的脚本和一个' @'在名称前添加。

E.g。如果用户输入' John Whatsmyname' - 它将在表格中以@JohnWhatsmyname发布

我认为这就像添加这样的东西一样简单;

$name = ($_POST['name']); 
$name = '@'.str_replace(' ', '', $name);

$name = preg_replace('/\s+/', '', $name); 

目前我有以下HTML;

<input type="text" value="<?php echo $user_data['name']; ?>" placeholder="username" name="name"/>
<input type="text" value="<?php echo $user_data['email']; ?>" placeholder="Email" name="email"/>

完整的PHP脚本:

<?php

if (empty($_POST) === false) {
$required_fields = array('name', 'email');
foreach($_POST as $key=>$value) {
    if (empty($value) && in_array($key, $required_fields) === true) {
        $errors[] = 'Name & email are required';
        break 1;
    }
}


$name = ($_POST['name']); 
$name = '@'.str_replace(' ', '', $name);

$name = preg_replace('/\s+/', '', $name);


<?php
   if (isset($_GET['success']) === true && empty($_GET['success']) === true) {
   echo 'Your details have been updated!'; 
    } else {
       if (empty($_POST) === false && empty($errors) === true) {

    $update_data = array(
        'info'      => $_POST['info'],
        'website'   => $_POST['website'],
        'location'  => $_POST['location'],
         $name      => $_POST['name'],
        'email'     => $_POST['email'],
    );

    update_user($session_user_id, $update_data);
    header('Location: profile.php?success');
    exit();

      } else if (empty($errors) === false) {
          echo output_errors($errors);
                  }
      }
    ?>      

我认为当我应用更改时,我什么都不做,因此脚本继续并使用原始数据更新表 - 我已经回显$ name变量,我得到错误未定义变量。

脚本需要通过输入&#39; @&#39;来更改名称。在开始并删除所有空格,而不仅仅是在发布到表之前的开头和结尾。试图避免错误消息并有一个脚本来解决问题。

谢谢(Y)

1 个答案:

答案 0 :(得分:2)

您没有看到它的效果,因为您完成了处理$name的所有工作,然后您的$update_data数组从全局{{{>}中获取了新的副本 1}}数组。相反,您应该将其更改为:

$_POST