我有一个索引页面,用于输入由空格分隔的项目的用户输入列表。它将该列表作为数组处理,并用","替换空格。但是,我的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";
?>
任何理解这一点的帮助将不胜感激!谢谢!
修改 非常感谢大家!好像我的问题是一个相当新手的问题,修复它很容易。
答案 0 :(得分: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>
<强> 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[]
,并将其作为数组提交给服务器端脚本。要处理,您有两种选择:
将输入类型更改为<input name="list" type="text">
,并保留当前拥有的服务器端脚本。注意&#34;列表&#34;之后没有大括号[]
。
保留前端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";