如何从PHP中的字符串中获取measument名称

时间:2015-04-30 14:09:54

标签: php string

我有一个数组形式的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";

提前致谢

3 个答案:

答案 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]; - >
  • 开头
  • ^ - >任何数字重复