用PHP替换数组中的空格

时间:2015-09-15 14:26:43

标签: php arrays whitespace removing-whitespace

我有一个索引页面,用于输入由空格分隔的项目的用户输入列表。它将该列表作为数组处理,并用","替换空格。但是,我的PHP脚本似乎没有这样做,我不确定我理解为什么。

的index.php

<form action="process.php" method="post">
    <b>Enter a list of items separated by a space:</b> <br><input name="list[]" type="text">
    <input type="submit">
</form>

process.php

<?php
$list = $_POST["list"];
$list = preg_replace('#\s+#',', ',trim($list));
echo "<b>Your listed items were:</b> $list";

?>

任何理解这一点的帮助将不胜感激!谢谢!

修改 非常感谢大家!好像我的问题是一个相当新手的问题,修复它很容易。

3 个答案:

答案 0 :(得分:2)

  1. 从输入名称中删除[]:
  2. <强>的index.php

    <form action="process.php" method="post">
        <b>Enter a list of items separated by a space:</b> <br><input name="list" type="text">
        <input type="submit">
    </form>
    
    1. 你真的需要正则表达吗?使用strtr()因为效率更高:
    2. <强> process.php

      <?php
      $list = $_POST["list"];
      $list = strtr(trim($list), ' ', ',');
      echo "<b>Your listed items were:</b> $list";
      ?>
      

答案 1 :(得分:1)

可能是因为你在数组上运行preg_replace。

相反,请尝试使用array_walk

$list = array('this', 'is a', 'test');

array_walk($list, function(&$v){
    $v = str_replace(' ', ', ', trim($v));
});


print_r(implode(', ', $list));

// Outputs: this, is, a, test

print_r(explode(', ', implode(', ', $list)));

// Outputs: ['this', 'is', 'a', 'test']

或者,如果你想对字符串做同样的事情:

$string = 'This is some test string';

print_r(str_replace(' ', ', ', trim($string)));

答案 2 :(得分:0)

这是因为您将输入名称设置为list[],并将其作为数组提交给服务器端脚本。要处理,您有两种选择:

  1. 将输入类型更改为<input name="list" type="text">,并保留当前拥有的服务器端脚本。注意&#34;列表&#34;之后没有大括号[]

  2. 保留前端HTML,因为您现在拥有它并更新服务器端代码:

    $lists = $_POST["list"]; //this comes in as an array from the HTML form
    $str = '';
    foreach($lists AS $list)
    {
        $str .= preg_replace('#\s+#',', ',trim($list));
    }
    echo "<b>Your listed items were:</b> $str";