一个IP的文件,每行的格式如下:
0.0.0.1 0.0.0.6 xxx网络 xxxx地方
要存到数据库中,首先想到的是把所有的空格都化成一个空格,再用空格分割。可是后来发现有的记录最后一个XXXX地方里面也有一个空格。不知道怎么办了。我是新手,大家帮帮忙啊, 不胜感激。
0.0.0.1 0.0.0.6 xxx网络 xxxx地方
要存到数据库中,首先想到的是把所有的空格都化成一个空格,再用空格分割。可是后来发现有的记录最后一个XXXX地方里面也有一个空格。不知道怎么办了。我是新手,大家帮帮忙啊, 不胜感激。
$str = '0.0.0.1 0.0.0.6 xxx网络 xxxx 地方';
$str[strripos($str,' ')] = '';$str = preg_replace('/[ ]{2,}/',' ',$str);
$ar = explode(' ',$str);
print_r($ar);
如果是\t的话,按csv导入数据库更好
andyxl,可是空格是在中间啊。
snmr_com 试了一下 好像不是\t啊,呵呵。
还有长两个角的大哥,用了你的方法,可是又有一个问题,有的记录 “xxxx地方”并没有空格,而且“xxx网络”和“xxxx地方”之间只有一个空格,就出问题了。
$str = '0.0.0.1 0.0.0.6 xxx网络 xxxx地方';
$str = preg_replace('/[ ]{2,}/',' ',$str);
$ar = explode(' ',$str);
if (count($ar) > 4) $str[strripos($str,' ')] = '';
$ar = explode(' ', $str);
print_r($ar);
//把左右兩側的空格和\t過濾掉
$a=Trim($a," ");
//把內部所有的空格和\t替換成|
$a=Strtr($a,Array(" "=>"|"," "=>"|"));
//把連續的雙||替換成一個
$a=Strtr($a,Array("||"=>"|");//用|拆分
$b=Explode("|",$a);Echo $b[0],'<br>';
Echo $b[1],'<br>';
Echo $b[2],'<br>';
Echo $b[3],'<br>';
$t = split("[ \t]+", trim($c));
return "('". join("','", $t) ."')";
}$ar = array_map('foo', file('你的数据文件名'));$sql = 'insert into ip_table (sip, eip, net, addr) values ' . join(',', $ar);
如果第三列没有空格$str='4.19.79.0 4.19.79.63 美国 Armed Forces Radio/Television';
preg_match_all("/^([\d\.]+) +([\d\.]+) +([^ ]+) +(.+)$/",$str,$match);
var_dump($match);