php正则表达式字符串中提取数字,并截取其中的6位

用php先提取字符串b37ba964bb7dfab1869e1cf8中的数字例如截取后数字是:379647186918然后最终获取从第二位开始,长度4位数字:7964或者... 用 php 先提取字符串 b37ba964bb7dfab1869e1cf8 中的数字
例如截取后数字是:379647186918

然后最终获取从
第二位开始,长度4位数字:7964
或者
第三位开始,长度5位数字:96471

php 中该如何表达,谢谢!
麻烦再问一下 如果 b37ba964bb7dfab1869e1cf8 的值是“$函数”调用,这个应该怎么写?
展开
 我来答
syht2000
高粉答主

2018-09-03 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
<?php
$str='b37ba964bb7dfab1869e1cf8';
$preg= "/\d/is";
preg_match_all($preg,$str,$arr);
$temp=implode('',$arr[0]);
echo $temp;//匹配的数字
echo '<br/>'. substr($temp,1,4);//第2位开始取4个
echo '<br/>'.substr($temp,2,5);//第3位开始取5个
?>
更多追问追答
追问
麻烦再问一下   如果 b37ba964bb7dfab1869e1cf8  的值是“$key”调用,这个应该怎么写?
追答
没明白你在说啥
shenkebiao
2018-09-03 · TA获得超过605个赞
知道小有建树答主
回答量:367
采纳率:100%
帮助的人:148万
展开全部

1、先把字符串 “b37ba964bb7dfab1869e1cf8” 中的字母(或者说非数字)替换掉,剩下的就都是数字

$string = preg_replace('/[^\d]*/', '', 'b37ba964bb7dfab1869e1cf8');
// 输出 $string = 379647186918

2、截取字符串

echo substr('379647186918', 1, 4); // 第二位开始截4个长度,输出 7964
echo substr('379647186918', 2, 5); // 第三位开始截5个长度,输出 96471
追问
麻烦再问一下   如果 b37ba964bb7dfab1869e1cf8  的值是“$key”调用,这个应该怎么写?
追答
$string = preg_replace('/[^\d]*/', '', $key);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星空屠戮剑
2018-09-03 · TA获得超过578个赞
知道小有建树答主
回答量:426
采纳率:85%
帮助的人:145万
展开全部

思路:首先移除非数字内容(利用正则),然后使用字符串进行截取(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);



追问
感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式