从特定方式格式化的字符串中轻松提取数据

时间:2013-05-14 19:39:18

标签: php regex string

采用以这种方式格式化的字符串的简单方法是什么:

c:7|bn:99

能够轻松使用该字符串吗?所以,如果我想得到c:背后的数字,我怎么能轻易搞定。同样,bn后面有数字的东西:?

4 个答案:

答案 0 :(得分:2)

您可以使用preg_match()函数,也可以使用explode()函数两次(第一次使用|分隔符,第二次使用:分隔符。

示例#1:

<?php
if( preg_match( '/^c:(\d+)\|bn:(\d+)$/', $sString, $aMatches ) )
{
  print_r( $aMatches );
}
?>

示例#2:

<?php
$aPairs = explode('|', $sString ); // you have two elements in $aPairs
foreach( $aParis as $sPair )
{
  print_r( explode(':', $sPair ) );
}
?>

答案 1 :(得分:0)

试试这个:

$string = 'c:7|bn:99';
preg_match('/\Ac:([0-9]+)\|bn:([0-9]+)\z/', $string, $matches);
var_dump($matches);

答案 2 :(得分:0)

$arr = array();
$str = "c:7|bn:99";
$tmp1 = explode('|', $str);

foreach($tmp1 as $val)
{
   $tmp2 = explode(':', $val);
   $arr[$tmp2[0]] = $tmp2[1]; 
}

//print ur array
print_r($arr);

//accessing specifc value
echo $arr['c']." ".$arr['bn'];

答案 3 :(得分:0)

如果c&amp; bn不是动态的:

var_dump(sscanf("c:7|bn:99","c:%d|bn:%d"));
array(2) {
  [0]=>
  int(7)
  [1]=>
  int(99)
}