【发布时间】:2025-12-28 06:55:11
【问题描述】:
我的数组有一些问题
我有一个 .txt 文件,我用
将其添加到 php 文件中$file = file_get_contents('data.txt');
data.txt 包含此格式的列表:
<info1 info2 0.10s [info: info] 10.10.10.10:80>
<info1 info2 0.10s [info: info, info] 10.10.10.10:80>
<info1 info2 0.10s [info:80, info:25] 10.10.10.10:80>
<info1 info2 0.10s [info: info, info, info:80, info:25] 10.10.10.10:80>
and so on
然后我正在使用:
$lines = explode("\n", $file);
我可以使用而不是使用 explode 和 file_get_contents
$lines = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
如果我这样做:
echo '<pre>';
print_r ($lines);
echo '</pre>';
我得到了这个数组
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
....
)
我正在努力让数组看起来像这样,以便我可以 foreach 并显示信息或将其添加到数据库中
Array
(
info1
info2
time
info *whats inside the []
ip
)
非常感谢任何帮助。提前感谢您对此进行调查!
首先,我正在努力让 foreach 工作
foreach($lines as $line => $data)
{
$lines_data = explode(' ', $data); //here i've tried to use preg_split with regex and i'm unable to get it to work
$info[$line]['info1'] = $lines_data[0];
$info[$line]['info2'] = $lines_data[1];
$info[$line]['time'] = $lines_data[2];
$info[$line]['info'] = $lines_data[3];
$info[$line]['ip'] = $lines_data[4];
echo ' info1: ' . $info[$line]['info1'] . '<br />';
echo ' info2: ' . $info[$line]['info2'] . '<br />';
echo ' time: ' . $info[$line]['time'] . '<br />';
echo ' info: ' . $info[$line]['info'] . '<br />';
echo ' ip: ' . $info[$line]['ip'] . '<br />';
}
它不能以这种方式工作,因为 explode(' ', $data); 被空格分割,我在 [ ]
之间也有空格【问题讨论】:
-
查看页面的实际来源。
<会导致浏览器开始呈现为 html,如果你想显示它,你需要遍历带有 htmlentities 的数组,pre 标签不会帮助你。另外你最好使用file() -
$lines = explode(PHP_EOL, $file);你会试试这个吗? -
文件中的数据究竟是什么?我会先把它解析成一个数组,然后对数组进行排序。
-
$lines = explode(PHP_EOL, $file);也在工作,所以.txt文件没有问题,问题出在数组格式上,因为我无法将它转换成我需要的格式,所以我可以将它添加到我的数据库中,所以我假设我需要从行中删除 并使用 preg_split 和正则表达式来拆分内容
-
$row设置在哪里?您需要展示一个实际行的示例,因为info不是它,加上空格分隔会将您限制为单个单词,因此任何答案很可能是错误的。