读取因空格而失败

Read fails with spaces

我对 PHP 很陌生,想学习。我正在尝试为我的服务器创建一个顶级列表,但我遇到了问题。我的文件是这样构建的:

"Name" "Kills"

"^0user1^7" "2"
"user2" "2"
"user3" "6"
"user with spaces" "91"

但是如果我想用 PHP 阅读它,它会失败,因为用户有空格。 这是我用来读取文件的方法:

$lines = file('top.txt');
foreach ($lines as $line) {
    $parts = explode(' ', $line);
    echo isset($parts[0]) ? $parts[0] : 'N/A' ;
}

也许有人知道更好的方法,因为这不是很好用:D.

你需要正则表达式:-)

<?php

$lines = array(
    '"^0user1^7" "2"',
    '"user2" "2"',
    '"user3" "6"',
    '"user with spaces" "91"',
);

$regex = '#"(?<user>[a-zA-Z0-9\^\s]+)"\s"(?<num>\d+)"#';

foreach ($lines as $line) {
    preg_match($regex, $line, $matches);
    echo 'user = '.$matches['user'].', num = '.$matches['num']."\n";
}

在正则表达式中,我们有 # 分隔符,然后在引号之间查找内容。使用 (?PATTERN) 给你一个命名的捕获组。第一个查找字母等,第二个仅查找数字。

看这里了解正则表达式是如何匹配的! https://regex101.com/r/023LlL/1/

在此处查看实际操作 https://3v4l.org/qDVuf

对于您的流程,这可能会有所帮助

$lines = file('top.txt');
$line = explode(PHP_EOL, $lines); // this will split file content line by line
foreach ($line as $key=>$value_line ) {
    echo str_replace(" ","",$value_line);
}

正如我在上面评论的那样,下面是一个带有 JSON 的简单示例。

假设您以 JSON 格式存储记录:

$json = '{
 "user1": "12",
 "sad sad":"23"
}';

$decoded = json_decode($json);
foreach($decoded as $key => $value){
    echo 'Key: ' . $key . ' And value is ' . $value;
}

这是演示 link:https://3v4l.org/ih1P7