我是PHP新手,想学习。我想为我的服务器做一个顶级列表,但我有一个问题。我的文件是这样构建的:
“姓名”“杀死”
"^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。
答案 0 :(得分:1)
你需要REGEX: - )
<?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";
}
在正则表达式中,我们有#delimiters,然后查找引号之间的东西。使用(?PATTERN)为您提供命名的捕获组。第一个查找字母等,仅查找第二个数字。
请看这里了解正则表达式是如何匹配的! https://regex101.com/r/023LlL/1/
答案 1 :(得分:0)
对于您的流程,这可能会有所帮助
$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);
}
答案 2 :(得分:0)
正如我上面评论的,下面是一个使用JSON的简单示例。
假设您已经存储了JSON格式的记录:
$json = '{
"user1": "12",
"sad sad":"23"
}';
$decoded = json_decode($json);
foreach($decoded as $key => $value){
echo 'Key: ' . $key . ' And value is ' . $value;
}
以下是演示链接:Explicit Dependencies Principle