PHP,匹配行和返回值

时间:2015-07-29 01:00:21

标签: php preg-match-all

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

$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";
}

如何使用PHP查找“平台”并返回值'router'

目前我正在尝试以下方法:

version()

2 个答案:

答案 0 :(得分:2)

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

<?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";
  }
?>

返回

enter image description here

答案 1 :(得分:0)

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

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函数。