如何操作字符串

hbcb 2004-04-02 05:04:44
$str="AB1234CD";
想对$str进行分解,
从第一个字符开始检查,当遇到数字时,把前面的几个字符保存在字符串$head 里面,如这里$head="AB"。
然后继续往后检查,当遇到不是数字时,把前面的数字当成整数保存在$number里面,如这里$number=1234,
再把后面的所有字符保存在$tail里面,如这里$tail="CD".

请问PHP如何实现呢?好象不能象 C 那样把字符串当成数组来操作吧?
...全文
4 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzuning 2004-04-03
<?php
$str="AB1234CD";
$reg = "/[^\d]+|[\d]+/";
preg_match_all($reg,$str,$arr);
print_r($arr[0]);
?>
回复
hbcb 2004-04-03
非常感谢,用preg_match_all 可以了,但是head 和tail 的范围不仅仅限于字母,是除了数字以外任何字符,要怎么表示呢?
回复
cloudchen 2004-04-02
<?php
$str="AB1234CD";
$reg = "/[a-zA-Z]+|[0-9]+/";
preg_match_all($reg,$str,$arr);
list($head,$number,$tail) = $arr[0];
echo $head.$number.$tail;
?>
回复
gucs 2004-04-02
不错
回复
skystar008 2004-04-02
用strstr()
回复
hahawen 2004-04-02
$str="AB1234CD";
preg_match_all("|^([a-zA-Z]+)([0-9]+)([a-zA-Z]+)$|",$str,$arr);
print_r($arr);
echo $arr[1][0].'----'.$arr[2][0].'----'$arr[3][0].'----';
回复
zhaobohao 2004-04-02
to:bonniewater(陪你去看海)
好简单。。
回复
bonniewater 2004-04-02
<?php
$str="AB1234CD";
$p = array("/(\d+)/","/[A-Z]{1,}/");
foreach($p as $v)
{
preg_match_all($v,$str,$arr);
print_r($arr);
}
?>

回复
zhaobohao 2004-04-02
for($i=0;$i<strlen($str);$i++)
{
$sub=substr($str,$i,1);
if(ctype_digit($sub))
$ISNUM[$i]=$sub;
else
$ISNUM[$i]=" ";
if(ctype_digit($sub))
$ISSTR[$i]="";
else
$ISSTR[$i]=$sub;
}

这个是对的,上面有错误,嗬嗬,太着急了写的时候。!!
回复
zhaobohao 2004-04-02
$ISNUM里面都是数字和空格,你自己根据空格把连续在一起的数字分开就可以了。
$ISSTR里面是字符和空格,你自己根据空格把连续在一起的字符分开就可以了。
回复
52juanjuan 2004-04-02
用正则表达式来进行判断
回复
zhaobohao 2004-04-02
for($i=0;$i<strlen($str);$i++)
{
$sub=substr($str,$i,1);
if(ctype_digit($sub))
$ISNUM[$i]=$sub;
else
$ISNUM[$i]=" ";
if(ctype_digit($sub))
$ISSTR[$i]=$sub;
else
$ISSTR[$i]="";
}
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告