Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中阅读此内容?_Php_Regex - Fatal编程技术网

如何在PHP中阅读此内容?

如何在PHP中阅读此内容?,php,regex,Php,Regex,我在很多文件的顶部都有这个: 读取这些数据并将它们放入变量的最佳方法是什么 我可以使用正则表达式捕获该段:/^(\-{3})(.*)(\-{3})/s,然后再次使用正则表达式将每个片段读入变量 有更好的办法吗?有没有办法将regex限制为仅三行,以防我在文档后面的某个地方有-- <?php $file = file("/path/to/the/file"); $titleLine = explode(": ",$file[1]); $typeLine = explode(": ",$f

我在很多文件的顶部都有这个:

读取这些数据并将它们放入变量的最佳方法是什么

我可以使用正则表达式捕获该段:
/^(\-{3})(.*)(\-{3})/s
,然后再次使用正则表达式将每个片段读入变量

有更好的办法吗?有没有办法将regex限制为仅三行,以防我在文档后面的某个地方有
--

<?php

$file = file("/path/to/the/file");

$titleLine = explode(": ",$file[1]);
$typeLine = explode(": ",$file[2]);

$title = $titleLine[1];
$type = $typeLine[1];

echo "$title: $type";

?>

它只读取文件中的第2行和第3行。

应该这样做:

<?php

$file = file("/path/to/the/file");

$titleLine = explode(": ",$file[1]);
$typeLine = explode(": ",$file[2]);

$title = $titleLine[1];
$type = $typeLine[1];

echo "$title: $type";

?>

它只读取文件中的第2行和第3行。

此操作:

$file = file("/file/path"); echo $title = array_pop(explode(": ",$file[1])); echo $type = array_pop(explode(": ",$file[2])); $file=file(“/file/path”); echo$title=array_pop(分解(“:”,$file[1]); echo$type=array_pop(explode(“:”,$file[2]); 这项工作:

$file = file("/file/path"); echo $title = array_pop(explode(": ",$file[1])); echo $type = array_pop(explode(": ",$file[2])); $file=file(“/file/path”); echo$title=array_pop(分解(“:”,$file[1]); echo$type=array_pop(explode(“:”,$file[2]);
最好的方法是不要使用
/s
并使用显式
^
换行
$
锚定。如果你只有这两个变量,就像在你的例子中,你确实可以用一个正则表达式:

 preg_match_all(
      '/
          ^ ---           $  \s*
          ^ (\w+) : (.*)  $  \s*
          ^ (\w+) : (.*)  $
      /mix',
      $text, $result, PREG_SET_ORDER);

这将为您提供[1]和[3]中每个变量的名称以及[2]和[4]中关联的值。

最好的方法是不要使用
/s
并使用显式
^
换行
$
锚定。如果你只有这两个变量,就像在你的例子中,你确实可以用一个正则表达式:

 preg_match_all(
      '/
          ^ ---           $  \s*
          ^ (\w+) : (.*)  $  \s*
          ^ (\w+) : (.*)  $
      /mix',
      $text, $result, PREG_SET_ORDER);

这将为您提供[1]和[3]中每个变量的名称,以及[2]和[4]中关联的值。

可能有一种稍微快一点的方法,但我们所讨论的不会超过微秒。这很好。如果文件非常大,那么您可以使用strpos()将第一部分分块。可能有一种稍微快一点的方法,但我们谈论的不是超过微秒的任何内容。这很好。如果文件超大型,则可以使用strps()将第一部分分块。如果我正确读取了文档,则会将文档的全部内容读取到数组中,如果文件较大,这可能不是最佳选择。看,我对这个做了一些修改,以满足我的需要,但它很好。谢谢如果我正确地读取了文档,那么这会将文档的全部内容读取到数组中,如果文件很大,这可能不是最好的选择。看,我对这个做了一些修改,以满足我的需要,但它很好。谢谢