Php 以数组形式读取文本文件
我想把一个文本文件转换成一个数组,下面是文本文件的样子Php 以数组形式读取文本文件,php,arrays,Php,Arrays,我想把一个文本文件转换成一个数组,下面是文本文件的样子 code 1 #Updated 12/15/2000 { Reezena of Confinement } code 2 #Added in v2.0 { Neil } code 3 #Added in V1.0 { Jansen } code 4 #Updated 12/15/2000 { Gellos } 它完成后会是什么样子 array( '1' => "Reezena of Confinement", '2' => "
code 1 #Updated 12/15/2000
{
Reezena of Confinement
}
code 2 #Added in v2.0
{
Neil
}
code 3 #Added in V1.0
{
Jansen
}
code 4 #Updated 12/15/2000
{
Gellos
}
它完成后会是什么样子
array(
'1' => "Reezena of Confinement",
'2' => "Neil",
'3' => "Jansen",
'4' => "Gellos",
)
我试过:
preg_match_all('/{(.*?)}/s', $html, $matches);
//HTML array in $matches[1]
echo "<pre>";
print_r($matches[1]);
echo "</pre>";
preg_match_all('/{(.*)}/s',$html,$matches);
//$matches中的HTML数组[1]
回声“;
打印($matches[1]);
回声“;
但是它缺少“代码XXX”
不知怎的,我需要抓住它
thx提前在PHP上使用
试试这个:
$txt = "code 1 #Updated 12/15/2000
{
Reezena of Confinement
}
code 2 #Added in v2.0
{
Neil
}
code 3 #Added in V1.0
{
Jansen
}
code 4 #Updated 12/15/2000
{
Gellos
}";
$lines = explode("\n", $txt);
$array = array();
$key = NULL;
foreach($lines as $line) {
if(trim($line) === '{' || trim($line) === '}') {
continue;
}
if(substr($line, 0, 4) == 'code') {
$exploded = explode(' ', $line);
$key = $exploded[1];
continue;
}
if(isset($key)) {
$array[$key] = $line;
$key = NULL;
}
}
echo "<pre>";
print_r($array);
echo "</pre>";
我的解决方案没有任何
preg
类函数
Array
(
[1] => Reezena of Confinement
[2] => Neil
[3] => Jansen
[4] => Gellos
)
你希望我们为你写代码吗?如果是这样的话,你是在错误的地方。展示你为此做了什么?不,编辑的问题,只是想知道这是否可能,我不希望得到代码,但THX分配!!!!!!!我认为OP需要
code
前缀来确定结果数组的keysYep;)我需要完美地编码,Thx分配!
$str = file_get_contents ( 't.txt' );
preg_match_all ( '@code\s+(\d+)[^{]*{([^}]+)}@', $str, $matches );
$result = array ();
foreach ( $matches [1] as $k => $id )
{
$result [$id] = trim ( $matches [2] [$k] );
}
var_dump ( $result );
$txt = "code 1 #Updated 12/15/2000
{
Reezena of Confinement
}
code 2 #Added in v2.0
{
Neil
}
code 3 #Added in V1.0
{
Jansen
}
code 4 #Updated 12/15/2000
{
Gellos
}";
$lines = explode("\n", $txt);
$array = array();
$key = NULL;
foreach($lines as $line) {
if(trim($line) === '{' || trim($line) === '}') {
continue;
}
if(substr($line, 0, 4) == 'code') {
$exploded = explode(' ', $line);
$key = $exploded[1];
continue;
}
if(isset($key)) {
$array[$key] = $line;
$key = NULL;
}
}
echo "<pre>";
print_r($array);
echo "</pre>";
Array
(
[1] => Reezena of Confinement
[2] => Neil
[3] => Jansen
[4] => Gellos
)