免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3995 | 回复: 11
打印 上一主题 下一主题

高手看过来,php处理这段字符. [复制链接]

论坛徽章:
0
跳转到指定楼层
[收藏(0)] [报告]
发表于 2007-12-27 09:55 |只看该作者 |正序浏览
10可用积分
0.0.0.0         0.255.255.255   IANA
1.0.0.0         1.0.0.0         IANA
1.0.0.1           1.255.255.255   美国
2.0.0.0         2.255.255.255   IANA
3.0.0.0     3.255.255.255   美国 新泽西通用电气公司



分三列,第1,2列都是IP,第三列是地址,中间的空格不规律.

论坛徽章:
0
11 [报告]
发表于 2007-12-28 11:08 |只看该作者
呵呵,楼上的真强

论坛徽章:
0
10 [报告]
发表于 2007-12-27 13:43 |只看该作者
呵呵~~
还真有人和我一样,用PHP来处理这个的。
04年做网站流量统计程序的时候,就用纯真版IP地址,解压成文本后就如楼主的格式,需要整理成CSV格式。把文本中的N个连续空格转换成一个半角逗号,只转换前两列,第三列中的空格保持原样,顺便删除“CZ88.NET”串。
当时就是用PHP写的脚本,后来因为经常要为客户导数据,导来导去的不方便,列数不定,分隔符也不定,就delphi和CBC分别重做了两个版本的。支持文本解析并入库,使用WIN的ODBC接口。工作换了,现在程序也找不着了。
当时觉得很好玩,后来发现 Excel 和WPS表格都有这种功能,可以直接按指定的分隔符打开,支持“忽略连续分隔符”,让我那个郁闷呀。再到后来发现discuz论坛也用纯真版的IP地址库,是用PHP程序直接读wry.dat文件。

论坛徽章:
0
9 [报告]
发表于 2007-12-27 11:16 |只看该作者
谢谢各位,有个网友帮搞顶了,用正则.如下:

$str="1.1.1.1      3.3.3.3    asdfsfssf";
$arr=split(" +",$str,3);
print_t($arr);

论坛徽章:
0
8 [报告]
发表于 2007-12-27 11:12 |只看该作者
这里高手好多哦。

论坛徽章:
0
7 [报告]
发表于 2007-12-27 10:58 |只看该作者
<?php
function trim_str($str)
{
        $a =trim($str);
        $aa = explode(' ',$a);
        $str .= $aa[0];
        for($i=1; $i<count($aa)-1; $i++)
        {
                if($aa[$i]!='')
                {
                        $s .= ' '.$aa[$i].' ';
                        continue;//或者去掉这个,可以实现多列输出
                }
        }
        $s .= $aa[count($aa)-1];
        return $s;
}
$s ='0.0.0.0         0.255.255.255   IANA
';
echo(trim_str($s));
?>

[ 本帖最后由 hiler 于 2007-12-27 11:01 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-12-27 10:43 |只看该作者
已经是了

论坛徽章:
0
5 [报告]
发表于 2007-12-27 10:43 |只看该作者
#!c:/strawberry/perl/bin/perl
use strict;
use warnings;
while (<DATA>) {
        my @arr=split(/\s+/,$_);
        my $tmp=join('',@arr[2..$#arr]);
        $tmp=~s/\s+//g;
        print $arr[0], "\t", $arr[1], "\t", $tmp, "\n";
}

__DATA__
0.0.0.0         0.255.255.255   IANA
1.0.0.0         1.0.0.0         IANA
1.0.0.1           1.255.255.255   美国
2.0.0.0         2.255.255.255   IANA
3.0.0.0     3.255.255.255   美国 新泽西通用电气公司

给你个perl版的

论坛徽章:
0
4 [报告]
发表于 2007-12-27 10:11 |只看该作者
我要把每行都分成三列.
2个IP各一列,后面的地址一列

论坛徽章:
0
3 [报告]
发表于 2007-12-27 10:08 |只看该作者
三列.
每一行分成3列,2个IP一列,后面的地址一列

论坛徽章:
0
2 [报告]
发表于 2007-12-27 10:07 |只看该作者
要弄成三列,还是要什么结果?
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP