PHP将字符串转换为选择表单框

时间:2016-02-04 18:04:32

标签: php string drop-down-menu

我有一些值从另一个应用程序返回为字符串。

他们采用以下格式:

key1|value1,key2|value2,key3|value3

我试图操纵它,所以我可以用这种格式得到它:

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

因此每个列表项用逗号分隔,但每个列表键和值对用|

分隔

有关如何实现这一目标的任何建议吗?

每个列表可能有未知数量的项目。我只用三个作为例子。

4 个答案:

答案 0 :(得分: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>标记替换换行符。

答案 1 :(得分: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>';
}

答案 2 :(得分: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>';

答案 3 :(得分: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