2016-02-04 6 views
0

У меня есть некоторые значения, возвращаемые в виде строки из другого приложения.PHP Преобразование строки в поле формы выбора

Они в этом формате:

key1|value1,key2|value2,key3|value3 

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

<select> 
<option value="key1">value1</option> 
<option value="key2">value2</option> 
<option value="key3">value3</option> 
</select> 

Таким образом, каждый элемент списка разделенных запятой, но затем каждая таблица ключей и пара значений разделяются символом |

Любые предложения о том, как достичь этого?

В списке может быть неизвестно количество элементов. Я просто использовал три примера.

+0

Ну, вы взорвите строку на отдельные элементы, затем выведите скобку 'select' и внутри вас перебирайте элементы для их вывода. В чем проблема? – arkascha

ответ

2

Это примитивно, но должен делать эту работу:

<?php 
$input = 'key1|value1,key2|value2,key3|value3'; 
$rawItems = explode(',', $input); 
echo "<select>\n"; 
foreach ($rawItems as $rawItem) { 
    list($key, $val) = explode('|', $rawItem); 
    echo sprintf("<option value=\"%s\">%s</option>\n", htmlentities($key), htmlentities($val)); 
} 
echo "</select>\n"; 

Выход:

<select> 
<option value="key1">value1</option> 
<option value="key2">value2</option> 
<option value="key3">value3</option> 
</select> 

Это для тестирования на CLI. Для вывода в браузере вы должны заменить разрывы строк на теги <br>.

0

Вот ваш код:

$s = "key1|value1,key2|value2,key3|value3"; 
$e = explode(",",$s); 
for($i=0;$i<count($e);$i++) { 
    $newex = explode("|",$e[$i]); 
    echo '<option value="'.$newex[0].'">'.$newex[1].'</option>'; 
} 
0

Вы можете просто использовать str_replace (не нужен цикл):

$full_string = 'key1|value1,key2|value2,key3|value3'; 

$options = str_replace(',', '</option><option value="', $full_string); 
$options = str_replace('|', '">', $options); 

echo '<select><option value="' . $options . '</option></select>'; 
0
$mainString = "key1|value1,key2|value2,key3|value3"; 
$optArray = explode(",", $mainString); 
$optString = ""; 
foreach($optArray as $optIndSting) { 
    $expIndString = explode("|", $optIndSting); 
    $optString.= '<option value="'.$expIndString[0].'">'.$expIndString[1].'</option>'; 
} 

$optString использовать для вашего выбора коробки,

термины б/у.

  1. explode ожидает параметров, сначала игла, вторая строка. http://www.w3schools.com/php/func_string_explode.asp
  2. foreach оператор цикла, который выполняет итерацию значений внутри массива. http://www.w3schools.com/php/php_looping_for.asp
Смежные вопросы