$str='b37ba964bb7dfab1869e1cf8';
$preg= "/\d/is";
preg_match_all($preg,$str,$arr);
$temp=implode('',$arr[0]);
echo $temp;//匹配的数字
echo '
'. substr($temp,1,4);//第2位开始取4个
echo '
'.substr($temp,2,5);//第3位开始取5个
?>
1、先把字符串 “b37ba964bb7dfab1869e1cf8” 中的字母(或者说非数字)替换掉,剩下的就都是数字
$string = preg_replace('/[^\d]*/', '', 'b37ba964bb7dfab1869e1cf8');
// 输出 $string = 379647186918
2、截取字符串
echo substr('379647186918', 1, 4); // 第二位开始截4个长度,输出 7964
echo substr('379647186918', 2, 5); // 第三位开始截5个长度,输出 96471
思路:首先移除非数字内容(利用正则),然后使用字符串进行截取(substr)。写成函数可以直接调用。代码如下:
function ProcessString($str,$start,$len){
$result=preg_replace("/[\D]/","",$str);//利用正则替换掉非数字内容
return substr($result,$start,$len); //利用substr进行字符截取
}
$str="b37ba964bb7dfab1869e1cf8";
echo ProcessString($str,1,4); //7964 字符由零开始,1表示第二位,4表示截取长度
echo ProcessString($str,2,5); //96471//其中$str为要处理的字符串,$start是截取数字的起始位置 $lend表示要处理的长度
如果 b37ba964bb7dfab1869e1cf8 的值是“$key”调用应该这样写(利用以上函数):
$key="b37ba964bb7dfab1869e1cf8";
echo ProcessString($key,2,5);