免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3697 | 回复: 9

如何用strtok截取一个字符串,将截得的内容放在变量中 [复制链接]

论坛徽章:
0
发表于 2003-11-26 20:55 |显示全部楼层
我现在的问题是要把例如"1    2    3"的字符串截成1,2,3,然后做1+2+3
最后输出"1+2+3=6"。怎么做?我用strtok写了个程序如下:
$string="1    2    3";
$tok = strtok($string," ";
$i = 1;
$part[0] = $tok;
while ($i<3) {
        $part = strtok(" ";
        $i=$i+1;
        echo part[0]."/n";
        echo part[1]."/n";
}
echo part[1]."/n";这句话总是没有输出,为什么?如何才能把得到的1,2,3保存起来然后做加法。谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-11-26 21:03 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中


  1. <?php
  2. $string="1 2 3";
  3. $string = str_replace(" ", "+", $string);
  4. eval ('$test = '.$string.';');
  5. echo $string ."=". $test;
  6. ?>;
复制代码

论坛徽章:
0
发表于 2003-11-26 22:15 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

to夜猫子:
我想我没表达清楚我的意思,我再说一下。现在有一个字符串是"1    2   3",我要得到这字符串里面的三个数字,然后重新组合出一个字符串,并把这三个数字做一些数学操作,然后给出一个例如"1 add 2 other 3 is 6"这样的字符串。
还有就是我那段代码的while循环中的echo part[1]."/n"; 为什么没有输出?我不是已经在上面做过赋值了么?如果我把$part = strtok(" "; 改成echo $part = strtok(" "; 就有输出,为什么?

论坛徽章:
0
发表于 2003-11-26 23:01 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

<?php
$string="1 2 3";
$SUM = 0;

$tok = strtok($string," ";
while ($tok !== FALSE) {
        $part[] = $tok;
        $tok = strtok(" ";
}
foreach ($part as $v) {
        echo "$v<br>;";
        $SUM += $v;
}
$string = implode(' add ',$part);
echo "$string is $SUM";
?>;

论坛徽章:
0
发表于 2003-11-27 10:20 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

还是没看明白楼主的意思~~~~
$str = "1 2 3";
eregi_replace(" ", "+", $httphost);

用正则表达式不是方便得多么?

论坛徽章:
0
发表于 2003-11-27 14:30 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

我把我要做的给出吧,本来想简化的,发现我的抽象能力不好。
有个文本,里面都是这样的内容:
192.1.2.3               0.0.255.255                        1.2.3.4
……
我现在要做的是用ip2long()把ip转化成long型
然后要得到这样的结果:
The ip is from 3221291523 to 3221357058 !!!
注:ip2long(192.1.2.3)=3221291523
    ip2long(0.0.255.255)=65535
    3221291523 + 65535 = 3221357058
应该怎么做?

论坛徽章:
0
发表于 2003-11-27 16:12 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

$iplist = "192.168.1.1 192.168.1.2 192.168.1.3";

for($i=1;$i<=3;$i++)
{
$tmp = strstr($iplist, ' ');
$ip[$i] = eregi_replace($tmp, "", $iplist);
$l_ip[$i] = ip2long($ip);
$iplist = $tmp;
}

大概意思就是这样吧~~~
数组$ip和$l_ip存的就是结果~~~要加要减的再随便操作~~~
还有可以用whlie来循环,这样要判断$tmp是不是为NULL。你自己写吧~

不保证语法正确,意思就是这个~

论坛徽章:
0
发表于 2003-11-27 17:16 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

to mikespook :
我试了一下,还是一样,得不出结果,
<?php
$iplist = "192.168.1.1 192.168.1.2 192.168.1.3";

for($i=1;$i<=3;$i++)
{
$tmp = strstr($iplist, ' ');
$ip[$i] = eregi_replace($tmp, "", $iplist);
$l_ip[$i] = ip2long($ip);
$iplist = $tmp;
}
echo $ip[1]."\n";
?>;

结果:192.168.1.1
echo $ip[2]."\n";
结果:   空白
echo $ip[3]."\n";
结果:   空白

这是为什么?难道循环里面赋值的到循环外就访问不到了?
longnetpro 该用户已被删除
发表于 2003-11-27 21:05 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2003-11-28 09:49 |显示全部楼层

如何用strtok截取一个字符串,将截得的内容放在变量中

感谢大家,问题已经基本解决,由于三个ip之间的空格不能确定,所以我用了$ip = preg_split('/ \s*/', $iplist); 其余都和longnetpro  说的一致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP