我有一些值从另一个应用程序返回为字符串。
他们采用以下格式:
key1|value1,key2|value2,key3|value3
我试图操纵它,所以我可以用这种格式得到它:
<select>
<option value="key1">value1</option>
<option value="key2">value2</option>
<option value="key3">value3</option>
</select>
因此每个列表项用逗号分隔,但每个列表键和值对用|
分隔有关如何实现这一目标的任何建议吗?
每个列表可能有未知数量的项目。我只用三个作为例子。
答案 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
到您的选择框
使用的术语。
explode
期望参数,首先是针,第二个是字符串。
http://www.w3schools.com/php/func_string_explode.asp foreach
循环语句,它迭代数组内的值。
http://www.w3schools.com/php/php_looping_for.asp