PHP、匹配线和 return 值

PHP, Match line, and return value

我在一个文件中有多行这样的行:

Platform
  value:  router
Native VLAN
  value:  00 01 

如何使用 PHP 找到 'Platform' 和 return 值 'router'

目前我正在尝试以下操作:

$file = /path/to/file
$contents = file_get_contents($file);
$pattern = preg_quote($searchfor, '/');
$pattern = "/^.*$value.*$/m";
if(preg_match_all($pattern, $contents, $matches)){
   echo "Found Data:\n";
   echo implode("\n", $matches[0]);
}
else{
   echo "No Data to look over";
}

这是一个非常简单的爆炸解决方案。 希望对你有帮助。

function getValue($needle, $string){

    $array = explode("\n", $string);

    $i = 0;
    $nextIsReturn = false;

    foreach ($array as $value) {
        if($i%2 == 0){
            if($value == $needle){
                $nextIsReturn = true;
            }
        }else{
            // It's a value
            $line = explode(':', $value);
            if($nextIsReturn){
                return $line[1];
            }
        }
        $i++;
    }
    return null;
}

$test = 'Platform
          value:  router
        Native VLAN
          value:  00 01 ';

echo getValue('Platform', $test);

如果尾随空格对您来说是个问题,您可以使用 trim 函数。

这是另一个简单的解决方案

<?php
  $file = 'data.txt';
  $contents = file($file, FILE_IGNORE_NEW_LINES);
  $find = 'Platform';
  if (false !== $key = array_search($find, $contents)) {
      echo 'FOUND: '.$find."<br>VALUE: ".$contents[$key+1];
  } else {
      echo "No match found";
  }
?>

returns