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