代码之家  ›  专栏  ›  技术社区  ›  lolpop16

读取失败,带有空格

  •  3
  • lolpop16  · 技术社区  · 7 年前

    "^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' ;
    }
    

    3 回复  |  直到 7 年前
        1
  •  1
  •   delboy1978uk    7 年前

    <?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

        2
  •  0
  •   Joyson    7 年前

    $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);
    }
    
        3
  •  0
  •   Milan Chheda guest271314    7 年前

    正如我在上面所评论的,下面是一个使用JSON的简单示例。

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

    $json = '{
     "user1": "12",
     "sad sad":"23"
    }';
    
    $decoded = json_decode($json);
    foreach($decoded as $key => $value){
        echo 'Key: ' . $key . ' And value is ' . $value;
    }
    

    下面是演示链接: https://3v4l.org/ih1P7