2015-10-04 3 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

Что делать, если введенная 'date' является' 205-10-03 19:01:47 '? Может быть, вам следует это знать. И я думаю, что значение - это дата, а не имя? – aldrin27

ответ

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

+0

Да, я думал об использовании str_replace в качестве обходного пути. Однако, поскольку я заменяю конкретный символ (а именно подчеркивание), который я специально не помещал туда, я обеспокоен тем, что в разных обстоятельствах другой браузер может заменить внутреннее пустое пространство чем-то другим, чем " _ ", что сделало бы str_replace бесполезным. – user5355646

+0

@ user5355646 Ahh, _I'm заменяю конкретный символ (а именно подчеркивание), который я специально не поставил там, в первую очередь, ну и это правильный вопрос. Я тестировал его на двух разных браузерах, и он работал. Но кто действительно знает, что это окажется в любом другом браузере, использование «скрытого» поля было бы лучше. ':-)' – user5173426

+0

спасибо! Но ваше предложение использовать скрытые поля вызывает другую проблему, которая заключается в том, что я хочу опубликовать дату для выбранной (= подчиненной) строки, но если я использую скрытые поля, у всех которых есть одно и то же имя «дата», 't получить выбранное значение. – user5355646

1

Как @arkascha пояснил в своем комментарии.

идентификатор и имя маркеры должны начинаться с буквы ([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

спасибо за объяснение, я не знал этого и, как ни странно, он действительно работает, даже если вы используете числа только как имя (однако, по-видимому, не включая пробелы).В любом случае, ваше предложение использовать скрытые поля вызывает другую проблему, которая заключается в том, что я хочу опубликовать дату для выбранной (= подчиненной) строки, но если я использую скрытые поля, у всех которых есть одно и то же имя «дата», тогда я не получайте выбранное значение. – user5355646

+0

@ user5355646, сделано обновление альтернативного решения – invisal

Смежные вопросы