Php 从行中提取内容
我试图表达我的访问日志文件,为此,我只需逐行读取访问日志文件,并从每行中提取有用的信息,最后将它们添加到数据库中 例如,一条线看起来像这样Php 从行中提取内容,php,regex,preg-match,phrase,Php,Regex,Preg Match,Phrase,我试图表达我的访问日志文件,为此,我只需逐行读取访问日志文件,并从每行中提取有用的信息,最后将它们添加到数据库中 例如,一条线看起来像这样 124.99.152.202 - naveen [22/Nov/2013:10:41:17 +1300] "GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078/IneedThisInteger/12.txt HTTP/1.1" "200" "3" "-" "Mozilla/5.0" "-" 我只知道如何提取IP地址。(使用)
124.99.152.202 - naveen [22/Nov/2013:10:41:17 +1300] "GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078/IneedThisInteger/12.txt HTTP/1.1" "200" "3" "-" "Mozilla/5.0" "-"
我只知道如何提取IP地址。(使用)
我想提取
GET/p/V4ZkA5d074CTy_vbFa7nLw,138507078,inedthisinger/12.txt HTTP/1.1
inedthis integer
200
3
"GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/FOLDER/12.txt HTTP/1.1"
"GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/FOLDER/ANOTHER FOLDER/12.txt HTTP/1.1"
"GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/FOLDER/ANOTHER FOLDER/HEREIS-ANOTHER-FOLDER-AND-SO-ON/12.txt HTTP/1.1"
所以我真的需要一种稳定的方法来从每一行获取这些值。我该怎么做呢?假设您总是有get请求,这应该可以做到
"(GET /.*?/.*?,\d+,(\d+)/.*?)"\s"(\d+)"\s"(\d+)"
有关表达式的解释,请参见。这应该可以做到:
^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*?"(.*?/p/.*?,\d+,(\d+).*?)" "(\d+)" "(\d+)".*$
这里有一把小提琴来演示:
为了测试的目的,我用一个实际的数字替换了你的“我需要这个整数”,并对“字节”和IP地址进行了一点随机化。以下是捕获,顺序如下:
获取xxx HTTP/1.1
)您通过选择适当的标记来回答您的问题:使用regex@kingkero问题是如何使用regex实现这一点,我尝试使用上面提到的在线工具,但失败了。这很好,但我不知道你是如何做到的。谢谢斯派克斯