【发布时间】:2014-05-20 16:28:08
【问题描述】:
我正在创建一个计数器。 注册访问者在那里的脚本会创建一个像这样的 .txt 文件
IP Adress:127.0.0.1
Timestamp:1400602795
User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36
Times visited:1
我希望能够获得时间戳和访问时间等信息。 我想这样做的一种方法是创建一个由“:”分隔的数组。
我尝试创建数组,但由于某种原因,“访问次数”未包含在数组中。这是该尝试的代码:
$fileResource = @fopen("hits/".$_SERVER["REMOTE_ADDR"].".txt","r");
$fileContent = @fread($fileResource,100000);
$array = preg_match_all("/(.*):(.*)\\n/i",$fileContent,$fileMatches);
//0 = IP
//1 = Timestamp
//2 = User Agent
//3 = Times Visited
echo $fileMatches[0][3];
这是我尝试 print_r($fileMatches) 时的输出
Array
( [0] => 数组 ( [0] => IP 地址:127.0.0.1
[1] => Timestamp:1400604101
[2] => User Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36
)
[1] => Array
(
[0] => IP Adress
[1] => Timestamp
[2] => User Agent
)
[2] => Array
(
[0] => 127.0.0.1
[1] => 1400604101
[2] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36
)
)
【问题讨论】:
-
请展示您尝试过的一些方法。
preg_match_all是这样做的方法。只是不要忘记为正则表达式添加多行开关。 -
这样的东西应该可以工作
|([^:.+]):([^:.+])\n|s。不确定懒惰,还必须检查应该停止正则表达式匹配的换行符。 -
遍历每一行,首先找到
:(使用strpos()),获取之前和之后的所有内容(使用substr())并创建您的数组。 (使用trim()去除空格。) -
我已经编辑了帖子并添加了更多信息