Chinaunix

标题: 高手看过来,php处理这段字符. [打印本页]

作者: hahajohn2006    时间: 2007-12-27 09:55
标题: 高手看过来,php处理这段字符.
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,第三列是地址,中间的空格不规律.
作者: hahajohn2006    时间: 2007-12-27 09:56
用php来处理
作者: alexru    时间: 2007-12-27 10:07
要弄成三列,还是要什么结果?
作者: hahajohn2006    时间: 2007-12-27 10:08
三列.
每一行分成3列,2个IP一列,后面的地址一列
作者: hahajohn2006    时间: 2007-12-27 10:11
我要把每行都分成三列.
2个IP各一列,后面的地址一列
作者: alexru    时间: 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版的
作者: hiler    时间: 2007-12-27 10:43
已经是了
作者: hiler    时间: 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 编辑 ]
作者: enous    时间: 2007-12-27 11:12
这里高手好多哦。
作者: hahajohn2006    时间: 2007-12-27 11:16
谢谢各位,有个网友帮搞顶了,用正则.如下:

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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2