gpt4 book ai didi

php - scanf格式问题

转载 作者:行者123 更新时间:2023-12-04 06:32:25 28 4
gpt4 key购买 nike

我有一个具有以下格式的日志文件:

INFO 2011-03-09 10:26:15,270 [user] message

我想使用 PHP 解析日志文件:
// assume file exists and all that
$handle = fopen("log_file.txt", "r");
while ($line_data = fscanf($handle, "%s %s %s [%s] %s\n")) {
var_dump($line_data);
}
fclose($handle);

当我运行此代码时,我得到:
[0]=>
array(5) {
[0]=> string(4) "INFO"
[1]=> string(10) "2011-03-09"
[2]=> string(12) "10:26:15,270"
[3]=> string(5) "user]"
[4]=> NULL
}
// snip

格式字符串中的右括号(“%s %s %s [%s] %s”)似乎正在破坏该行的其余部分的解析。我检查了 scanf 的 PHP 文档(按照 fscanf 的建议),我没有看到任何提到必须转义左括号的内容。

关于如何让第 4 个和第 5 个元素分别看起来像“用户”和“消息”的任何建议?

最佳答案

使用格式

"%s %s %s [%[^]]] %s\n"

防止第四个元素取任何 ]字符(当然,这假设没有用户在名称中包含 ])。

(使用 sscanf 的示例: http://ideone.com/lJHYa )
%[abc]格式说明符将使函数读取仅由字符组成的字符串 a , bc .反之, %[^xyz]将使函数读取一个没有任何 x 的字符串, yz .

因此, %[^]]以上将读取一个字符串,直到命中 ] .

关于php - scanf格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248397/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com