2015-10-04 73 views
1

自动替换我有以下的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) 
+0

这是您的浏览器修复您的(无效)代码。输入字段名称不能有任意名称。例如,名称内不能有空格。你的浏览器试图为你解决这个问题。 – arkascha

+0

如果输入的日期是'205-10-03 19:01:47'?也许你应该知道这一点。我认为价值是不正确的日期? – aldrin27

回答

1

,我怎么能避免呢?

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

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

OUTPUT:

2015-10-03 19:01:47 

PHP Manual: str_replace

+0

是的,我正在考虑使用str_replace作为解决方法。然而,由于我正在替换一个特定的字符(即下划线),我并不是特意放在那里,我担心的是,在不同的情况下,不同的浏览器可能会用“ _“,这将使str_replace无用。 – user5355646

+0

@ user5355646啊,我正在替换一个特定的字符(也就是下划线),这个字符我并没有特别放在那里,这是一个有效的问题。我在两个不同的浏览器上测试过它,它工作。但是谁真正知道它最终会在其他任何浏览器上使用“隐藏”字段会更好。 ':-)' – user5173426

+0

谢谢!但是,您使用隐藏字段的建议引发了一个不同的问题,那就是我想为选定的(= submiitted)行发布日期,但是如果我使用隐藏字段都具有相同名称的'date',那么我不会没有得到选定的值。 – user5355646

1

由于@arkascha在他的评论解释。

ID和名称标记必须以字母开头([A-ZA-Z])和之后可以是任何数量的字母,数字([0-9]),连字符( “ - ”) ,下划线(“_”),冒号(“:”)和句点(“。”)。

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

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

或者,你可以使用<button>

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

感谢您的解释,我不知道这一点,奇怪的是,即使您只使用数字作为名称(但显然不包括空格)它实际上工作。无论如何,你使用隐藏字段的建议引发了一个不同的问题,那就是我想发布一个选定的(= submiitted)行的日期,但是如果我使用隐藏字段都具有相同名称的'date',那么我没有得到选定的值。 – user5355646

+0

@ user5355646,完成更新替代解决方案 – invisal