我有一个数组形式的feed,其中包含构造区域
export PYTHONPATH=$PYTHONPATH:/usr/bin/python
有时它附带在字符串本身附加的测量值
$x['AC']="25";
如何检测到这一点,然后将数组的值清除为数字。 一旦检测到我必须创建一个像
这样的字符串 $x['AC']="25mt2"; or $x['AC']="25 mt2"; or $x['AC']="25m2";
$x['AC']="25ht2"; or $x['AC']="25 ht2"; or $x['AC']="25h2";
提前致谢
答案 0 :(得分:2)
我会使用preg删除除数字之外的其他字符:
$x['AC'] = preg_replace('/\D+/','',$x['AC']);
但是除了你引用的25之外还会留下任何额外的值,但如果25是第一个数字,我会使用preg来获取字符串中的第一个数字:
if(!is_numeric($x['AC'])){
preg_match('/^\d+/',$x['AC'],$nr);
$x['AC'] = $nr[0];
}
要获得内部mt或ht,我会修改正则表达式:
if(!is_numeric($x['AC'])){
preg_match('/^(\d+)\s?(.*)$/',$x['AC'],$nr);
$x['AC'] = $nr[1];
$mtORht = $nr[2];
}
好的,恢复,所以m2是默认的,对于其他任何你想在数组中创建一个具有该值的变量: 好的,浮动值也是:
if(!is_numeric($x['AC'])){
preg_match('/^([0-9\.]+)\s?(.*)$/',$x['AC'],$nr); //$x['AC']="25 ht2"
$theValue = $nr[1]; //25
$theMeasurementName = $nr[2]; //ht2
//creating the variable:
if(!stristr($theMeasurementName, 'm')){ // if no "m" is found, the m you wish to omit.
${$theMeasurementName} = $theValue; // $ht2[] = 25
}
}
答案 1 :(得分:2)
你可以把它强制转换成一个整数,如果有一个非数值,它会被切断,如下所示:
$x['AC'] = (int) $x['AC'];
示例输入/输出:
25 -> 25
25mt2 -> 25
25ht2 -> 25
25 mt2 -> 25
25 ht2 -> 25
25m2 -> 25
25h2 -> 25
修改强>
根据您更新的问题,您可以使用preg_match()
创建字符串:
preg_match("/^(\d+)\s*(.*?)$/", $x["AC"], $m);
echo (empty($m[2])?"m2":$m[2]) . "[;;;;]" . $m[1];
答案 2 :(得分:0)
from suds.client import Client
正则表达式:
$match = array();
preg_match('/^\d+/', $string, $match));
echo $match[0];
- > ^
- >任何数字重复