【问题标题】:blank space gets automatically replaced by underscore空格自动替换为下划线
【发布时间】:2015-10-04 09:48:42
【问题描述】:

我的输入字段中有以下 php 代码:

<input type="submit" name='<?php echo $row["date"];?>' value="send">

var_dump($row["date"]) 显示数据是这样的字符串:

string '2015-10-03 19:01:47' (length=19)

那么,为什么当我发布此表单时,空格会自动替换为下划线,我该如何避免呢?

var_dump($_POST):

array (size=1)
'2015-10-03_19:01:47' => string 'send' (length=4)

【问题讨论】:

  • 这是您的浏览器修复您的(无效)代码。输入字段名称不能具有任意名称。例如,名称中不能有空格。您的浏览器会尝试为您解决此问题。
  • 如果输入的date205-10-03 19:01:47 怎么办?也许你应该意识到这一点。而且我认为值是日期而不是名称对吗?

标签: php html forms


【解决方案1】:

我该如何避免呢?

您可以使用str_replace 来获得所需的行为:

<?php
$send = '2015-10-03_19:01:47';
echo str_replace("_"," ",$send);
?>

输出:

2015-10-03 19:01:47

PHP Manual: str_replace

【讨论】:

  • 是的,我也在考虑使用 str_replace 作为解决方法。但是,由于我要替换一个特定的字符(即下划线),而我一开始并没有专门把它放在那里,我担心的是,在不同的情况下,不同的浏览器可能会用除 " _" 这将使 str_replace 无效。
  • @user5355646 啊,我正在替换一个特定的字符(即下划线),我一开始并没有专门放在那里,这是一个有效的问题。我在两种不同的浏览器上对其进行了测试,并且可以正常工作。但谁知道它最终会出现在任何其他浏览器上,使用hidden 字段会更好。 :-)
  • 谢谢!但是您使用隐藏字段的建议带来了一个不同的问题,即我想发布选定(=提交)行的日期,但是如果我使用所有具有相同名称“日期”的隐藏字段,那么我不'没有得到选定的值。
【解决方案2】:

正如@arkascha 在他的评论中解释的那样。

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线(“_”)、冒号(“:”)和句点(“.”)。

因此,不可能有空格作为名称。你问如何避免这个?很简单,只是不要使用日期作为输入的名称。您可以隐藏包含日期值的输入字段。

<input type="hidden" name='date' value='<?php echo $row["date"];?>'>
<input type="submit" name='submit' value="send">

或者,您可以使用&lt;button&gt;

<button type="submit" name="submit" value="<?php echo $row["date"]; ?>">Submit</button>

【讨论】:

  • 感谢您的解释,我不知道这一点,奇怪的是,即使您仅将数字用作名称(但是,显然不包括空格),它也确实有效。无论如何,您使用隐藏字段的建议带来了一个不同的问题,即我想发布选定(=提交)行的日期,但是如果我使用所有具有相同名称“日期”的隐藏字段,那么我不要得到选定的值。
猜你喜欢
  • 2011-07-12
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多