2015-04-18 4 views
0

Я использую форму, в которой люди могут заказывать продукты. Одна из переменных продукта заключается в следующем:Как вырезать пробелы в строке

$product1 = 'Baguette Cheese'; 

Я использую эту переменную в виде, как это:

<td><?php echo $product1 ?></td> 
<td>&euro; <?php echo number_format($prijs[$product1], 2); ?></td> 
<td><input type="text" name="<?php echo $product1 ?>" size="3" /></td> 

Делая это таким образом, я не могу прочитать имя ATTRIB. с $ _POST, потому что есть пространство между Багет и Сыр

Это делает работу:

$product1 = 'Cheese-Burger'; 

Но в первом тд есть сыр-Burger отображается и я не хочу, между ним. Так я thougth: держать дефис прочь и лишить места в имени Attrib, как это:

<td><input type="text" name="<?php echo str_replace(' ', '', $product1) ?>" size="3" /></td> 

К сожалению, это не работает, он не может читать $ _POST.

Как я могу сделать эту работу без использования дефиса или подчеркивания между Багет и сыр?

При подаче:

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
echo $_POST[$product1]; // no result 
} 
+0

POST данные Поддерживаете пробелы и переносы? – adeneo

+0

@adeneo, нет. Они должны быть одним словом, но могут иметь числа и символы подчеркивания. –

+0

Вы делаете только 1 'str_replace'. Это означает, что вы публикуете '$ _POST ['baguettechees'];' но вы читаете '$ _POST ['baguette cheese']'! – DarkBee

ответ

1

К сожалению, это не работает, он не может читать $ _POST.

Вы не вторя str_replace на:

<td><input type="text" name="<?php str_replace(' ', '', $product1) ?>" size="3" /></td> 

Изменение к:

<td><input type="text" name="<?php echo str_replace(' ', '', $product1) ?>" size="3" /></td> 

Update после прочтения вам комментарии:

Почему вы даете forminputname вместо продукта просто product1? то вы можете получить его, используя $_POST['product1']; . Это не имеет смысла в коде формы.

Попробуйте вместо этого:

<td><?php echo $product1 ?></td> 
<td>&euro; <?php echo number_format($prijs[$product1], 2); ?></td> 
<td><input type="text" name="product1" size="3" /></td> 

затем получить значение $_POST с помощью:

$_POST['product1'] 
+0

извините, я забыл эхо перед ним, но он все еще не работает. ' echo $ _POST [$ product1]; 'ничего не отображает ** Сообщение выше обновлено ** –

+1

@nuetmaessen прочитало мое обновление. –

+0

Это прекрасно работает! Thnx для решения –

-1

Вы можете сделать:

$product1 = 'Baguette Cheese'; 

$test = explode(" ", $product1); 

это даст массив :

["Baguette","Cheese"] 

затем:

$nowhitespace = $test[0] . $test[1]; 

or 

$nowhitespace = implode("", $test); 
+1

downvoting, потому что это просто страшное решение для простого простого использования: 'str_replace ('', '', $ str);' – DarkBee

+0

да довольно справедливо ...;) – deowk