是否可以从STRING获取值:
$string = ' * some parameter: A+ * Nextparameter: 0,671 kWh/24h *
Some another parameter value: 245 kWh/year * Last parm: 59 kg';
现在我知道我需要什么参数并且有一个列表:
我的参数我发现的内容(总是一样):
$parm1 = "* some parameter:";
$parm2 = "* Nextparameter:";
$parm3 = "* Some another parameter value:";
$parm4 = "* Last parm:";
我怎样才能得到这个结果:
$parm1result = "A+";
.. etc ...
或者,最好的方式:
$result = array(
"some parameter" => "A+",
"Nextparameter" => "0.671",
... etc ...
);
谢谢...
答案 0 :(得分:1)
抱歉,上一篇文章搞砸了。
您需要拆分两次并应用一些修剪:
<?php
$string = ' * some parameter: A+ * Nextparameter: 0,671 kWh/24h *
Some another parameter value: 245 kWh/year * Last parm: 59 kg';
// remove beginning and ending stars and whitespace so we don't have empty values
$string = trim($string, ' *');
// get parameters
$arr = explode('*', $string);
// trim a little more
$arr = array_map(trim, $arr);
// add stuff to array
$result = array();
foreach ($arr as $param) {
// nicer way of representing an array of 2 values
list($key, $value) = explode(':', $param);
$result[trim($key)] = trim($value);
}
var_export($result);
?>
答案 1 :(得分:1)
作为将参数检索到数组中的另一种方法,您可以使用preg_match_all()
函数。
然而,这可能是更复杂(虽然更短)的方式:
$params = array();
$string = ' * some parameter: A+ * Nextparameter: 0,671 kWh/24h * Some another parameter value: 245 kWh/year * Last parm: 59 kg';
if (preg_match_all('/\*\s*([^\:]+):([^\*]+)/', $string, $m) > 0) {
foreach ($m[1] as $index => $matches) {
$params[trim($matches)] = trim($m[2][$index]);
}
}
// $params now contains the parameters and values.