Php 返回所有文本

Php 返回所有文本,php,file,Php,File,我正在用这段代码在php上读取一个文件 $file_array = parse_ini_file("/usr/local/etc/oscam.user"); echo "<pre>"; foreach ($file_array as $value) { echo $value."<br />"; } exit; 这是正确的,但问题是,它只是返回文件的结尾(最后一个元素)。我的文件如下所示 $handle = @fo

我正在用这段代码在php上读取一个文件

    $file_array = parse_ini_file("/usr/local/etc/oscam.user");
    echo "<pre>";
    foreach ($file_array as $value) {
        echo $value."<br />";
    }
    exit;
这是正确的,但问题是,它只是返回文件的结尾(最后一个元素)。我的文件如下所示

$handle = @fopen("oscam.user", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        if(strlen(trim($line)) > 0 && $line[0] != "[") {
            $ar = explode("=", $line);
            echo(trim($ar[1]));
        }
    }
}

正如您所看到的,还有更多的帐户需要阅读。

由于您无法更改原始文件,您可能必须手动解析它,如下所示:

[account]
user[]                          = vrum
pwd[]                           = pass1
group[]                         = 1
au[]                            = 1
caid[]                          = 0B00
ident[]                         = 0B00:000000

[account]
user[]                          = sovrum
pwd[]                           = pass2
group[]                         = 1
au[]                            = 0
caid[]                          = 0B00
ident[]                         = 0B00:000000
原始答案:

parse_ini_文件将覆盖这些值,因为它们具有相同的名称。您可能希望文本文件如下所示:

$file_array = parse_ini_file("/usr/local/etc/oscam.user");
echo "<pre>";
foreach ($file_array as $val_array) {
    foreach($val_array as $value) {
        echo $value."<br />";
    }
}
exit;
为了得到所有的值:

$content = file_get_contents("/usr/local/etc/oscam.user");
preg_match_all('/\]([^\[]+)/s', $content, $matches);

echo "<pre>";
foreach ($matches[1] as $block) {
    $array = parse_ini_string($block);
    foreach ($array as $value) {
        echo $value."<br />";
    }
}
echo "</pre>";
exit;
$file\u array=parse\u ini\u文件(“/usr/local/etc/oscam.user”);
回声“;
foreach($file\u数组作为$val\u数组){
foreach($val_数组作为$value){
回显$value.“
”; } } 出口
由于无法更改原始文件,您可能必须手动解析,如下所示:

[account]
user[]                          = vrum
pwd[]                           = pass1
group[]                         = 1
au[]                            = 1
caid[]                          = 0B00
ident[]                         = 0B00:000000

[account]
user[]                          = sovrum
pwd[]                           = pass2
group[]                         = 1
au[]                            = 0
caid[]                          = 0B00
ident[]                         = 0B00:000000
原始答案:

parse_ini_文件将覆盖这些值,因为它们具有相同的名称。您可能希望文本文件如下所示:

$file_array = parse_ini_file("/usr/local/etc/oscam.user");
echo "<pre>";
foreach ($file_array as $val_array) {
    foreach($val_array as $value) {
        echo $value."<br />";
    }
}
exit;
为了得到所有的值:

$content = file_get_contents("/usr/local/etc/oscam.user");
preg_match_all('/\]([^\[]+)/s', $content, $matches);

echo "<pre>";
foreach ($matches[1] as $block) {
    $array = parse_ini_string($block);
    foreach ($array as $value) {
        echo $value."<br />";
    }
}
echo "</pre>";
exit;
$file\u array=parse\u ini\u文件(“/usr/local/etc/oscam.user”);
回声“;
foreach($file\u数组作为$val\u数组){
foreach($val_数组作为$value){
回显$value.“
”; } } 出口
由于无法更改原始文件,您可能必须手动解析,如下所示:

[account]
user[]                          = vrum
pwd[]                           = pass1
group[]                         = 1
au[]                            = 1
caid[]                          = 0B00
ident[]                         = 0B00:000000

[account]
user[]                          = sovrum
pwd[]                           = pass2
group[]                         = 1
au[]                            = 0
caid[]                          = 0B00
ident[]                         = 0B00:000000
原始答案:

parse_ini_文件将覆盖这些值,因为它们具有相同的名称。您可能希望文本文件如下所示:

$file_array = parse_ini_file("/usr/local/etc/oscam.user");
echo "<pre>";
foreach ($file_array as $val_array) {
    foreach($val_array as $value) {
        echo $value."<br />";
    }
}
exit;
为了得到所有的值:

$content = file_get_contents("/usr/local/etc/oscam.user");
preg_match_all('/\]([^\[]+)/s', $content, $matches);

echo "<pre>";
foreach ($matches[1] as $block) {
    $array = parse_ini_string($block);
    foreach ($array as $value) {
        echo $value."<br />";
    }
}
echo "</pre>";
exit;
$file\u array=parse\u ini\u文件(“/usr/local/etc/oscam.user”);
回声“;
foreach($file\u数组作为$val\u数组){
foreach($val_数组作为$value){
回显$value.“
”; } } 出口
由于无法更改原始文件,您可能必须手动解析,如下所示:

[account]
user[]                          = vrum
pwd[]                           = pass1
group[]                         = 1
au[]                            = 1
caid[]                          = 0B00
ident[]                         = 0B00:000000

[account]
user[]                          = sovrum
pwd[]                           = pass2
group[]                         = 1
au[]                            = 0
caid[]                          = 0B00
ident[]                         = 0B00:000000
原始答案:

parse_ini_文件将覆盖这些值,因为它们具有相同的名称。您可能希望文本文件如下所示:

$file_array = parse_ini_file("/usr/local/etc/oscam.user");
echo "<pre>";
foreach ($file_array as $val_array) {
    foreach($val_array as $value) {
        echo $value."<br />";
    }
}
exit;
为了得到所有的值:

$content = file_get_contents("/usr/local/etc/oscam.user");
preg_match_all('/\]([^\[]+)/s', $content, $matches);

echo "<pre>";
foreach ($matches[1] as $block) {
    $array = parse_ini_string($block);
    foreach ($array as $value) {
        echo $value."<br />";
    }
}
echo "</pre>";
exit;
$file\u array=parse\u ini\u文件(“/usr/local/etc/oscam.user”);
回声“;
foreach($file\u数组作为$val\u数组){
foreach($val_数组作为$value){
回显$value.“
”; } } 出口
我假设
pass1
pass2
是实际密码的替换,在这种情况下,其中的一个字符可能会中断解析。尝试用作$scanner\u模式。这将阻止php尝试解析这些值

编辑:使用您的值和等效的parse_ini_string()函数,这似乎可以正常工作:

我假设
pass1
pass2
是实际密码的替换,在这种情况下,其中的一个字符可能会中断解析。尝试用作$scanner\u模式。这将阻止php尝试解析这些值

编辑:使用您的值和等效的parse_ini_string()函数,这似乎可以正常工作:

我假设
pass1
pass2
是实际密码的替换,在这种情况下,其中的一个字符可能会中断解析。尝试用作$scanner\u模式。这将阻止php尝试解析这些值

编辑:使用您的值和等效的parse_ini_string()函数,这似乎可以正常工作:

我假设
pass1
pass2
是实际密码的替换,在这种情况下,其中的一个字符可能会中断解析。尝试用作$scanner\u模式。这将阻止php尝试解析这些值

编辑:使用您的值和等效的parse_ini_string()函数,这似乎可以正常工作:
$content=file\u get\u contents(“/usr/local/etc/oscam.user”);
preg_match_all('/\]([^\[]+)/s',$content,$matches);
回声“;
foreach($matches[1]为$block){
$array=parse_ini_字符串($block);
foreach($array作为$value){
回显$value.“
”; } } 回声“; 出口
将文件解析为块,用符号从“]”分隔为“[”,然后解析每个块的ini字符串,然后打印它们的值。

$content=file\u get\u contents(“/usr/local/etc/oscam.user”);
preg_match_all('/\]([^\[]+)/s',$content,$matches);
回声“;
foreach($matches[1]为$block){
$array=parse_ini_字符串($block);
foreach($array作为$value){
回显$value.“
”; } } 回声“; 出口
将文件解析为块,用符号从“]”分隔为“[”,然后解析每个块的ini字符串,然后打印它们的值。

$content=file\u get\u contents(“/usr/local/etc/oscam.user”);
preg_match_all('/\]([^\[]+)/s',$content,$matches);
回声“;
foreach($matches[1]为$block){
$array=parse_ini_字符串($block);
foreach($array作为$value){
回显$value.“
”; } } 回声“; 出口
将文件解析为块,用符号从“]”分隔为“[”,然后解析每个块的ini字符串,然后打印它们的值。

$content=file\u get\u contents(“/usr/local/etc/oscam.user”);
preg_match_all('/\]([^\[]+)/s',$content,$matches);
回声“;
foreach($matches[1]为$block){
$array=parse_ini_字符串($block);
foreach($array作为$value){
回显$value.“
”; } } 回声“; 出口

将文件解析为块,用符号从“]”到“[”分隔,然后解析每个块的ini_字符串,然后打印它们的值。

我无法更改原始值file@AlvaroCarvajalNakosmai请检查编辑后的答案。我无法更改原始答案file@AlvaroCarvajalNakosmai请检查编辑后的答案。我无法更改原始答案file@AlvaroCarvajalNakosmai请检查编辑后的答案。我无法更改答案起初的file@AlvaroCarvajalNakosmai请检查编辑后的答案。