求代码~高手来看!关于读文本取分隔符的问题

flow3r 2005-06-16 11:16:16
我有一分本内容每行如下格式
192.168.0.3 - - [01/Jun/2005:01:31:36 -0400] "GET / HTTP/1.1" 403 276

我要把他分为3个段
192.168.0.3 1段
01/Jun/2005:01:31:36 -0400 1段
"GET / HTTP/1.1" 403 276 1段
请问用什么命令 怎么分呢


我的读取文本代码是

$file="/usr/local/web/access_log"; //设定文件的路径和名称,放到了PHP运行目录下,所以没写路径
if(is_writeable($file)) //如果此文件存在\此目录允许读就执行以下操作
{

$contents=file($file); //将文件读出并存入$contents数组
$size=sizeof($contents); //计算数组个数,以控制循环次数
我不知道下面该怎么写了
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
-神仙- 2005-06-16
  • 打赏
  • 举报
回复
被抢先了
-神仙- 2005-06-16
  • 打赏
  • 举报
回复
不用那么麻烦
$s="192.168.0.3 - - [01/Jun/2005:01:31:36 -0400] \"GET / HTTP/1.1\" 403 276";
$ip="((\d{1,3}\.){3}\d{1,3})";
preg_match("/^(".$ip.").+\[(.+)\](.+)$/", $s , $a);
echo $a[2]."<br>\n";
echo $a[4]."<br>\n";
echo $a[5]."<br>\n";
xuzuning 2005-06-16
  • 打赏
  • 举报
回复
<?php
$s = '192.168.0.3 - - [01/Jun/2005:01:31:36 -0400] "GET / HTTP/1.1" 403 276';
preg_match('/(.+) - - \[(.+)\] (".+)/',$s,$a);
print_r($a);
?>
Array
(
[0] => 192.168.0.3 - - [01/Jun/2005:01:31:36 -0400] "GET / HTTP/1.1" 403 276
[1] => 192.168.0.3
[2] => 01/Jun/2005:01:31:36 -0400
[3] => "GET / HTTP/1.1" 403 276
)
对于你的问题就是对$contents的每个元素执行上面的代码
flow3r 2005-06-16
  • 打赏
  • 举报
回复
我试试 各位高手真厉害!!

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧