Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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 preg_匹配整个文件引号之间的字符串_Php_Parsing_Preg Match - Fatal编程技术网

PHP preg_匹配整个文件引号之间的字符串

PHP preg_匹配整个文件引号之间的字符串,php,parsing,preg-match,Php,Parsing,Preg Match,我创建了一个php文件,试图用它来解析数据。我要分析的文件内容如下所示: [Titles] hollywoodhd1 1 0 8046 0 919 PG-13 6712 1 identity_hd "(HD) Identity Thief" Disk 0 04/15/13 11/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0 hollywoodhd2 3 0 8016 0 930 PG 5347 1 escapep_hd "(HD) Escape

我创建了一个php文件,试图用它来解析数据。我要分析的文件内容如下所示:

[Titles]
  hollywoodhd1 1 0 8046 0 919 PG-13 6712 1 identity_hd "(HD) Identity Thief" Disk 0 04/15/13 11/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
  hollywoodhd2 3 0 8016 0 930 PG 5347 1 escapep_hd "(HD) Escape from Planet Earth" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
  hollywoodhd3 1 0 8012 0 930 PG-13 5828 1 darkski_hd "(HD) Dark Skies" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
我创建的PHP:

<?php

foreach (glob("*.mov") as $filename)

$theData = file_get_contents($filename) or die("Unable to retrieve file data");
    // echo nl2br($theData); //- This will print the entire text-wrapped line breaks.

$Ratings = ['G', 'PG', 'PG-13', 'R', 'NR', 'XXX']; // - This doesn't do anything yet.

if (preg_match('!"([^"]+)"!', $theData, $m)){

        echo $m[1];
}

?>

这是我到目前为止得到的,我还没有得到排序部分,因为你没有说你希望它如何排序

<?php
header("content-type: text/plain");
function getInfo($string){
    $Ratings = ['G', 'PG', 'PG-13', 'R', 'NR', 'XXX']; // Used in the loop below
    $split = preg_split("/\"(.+)\"/", $string, -1, PREG_SPLIT_DELIM_CAPTURE);
    $string = $split[1];
    preg_match("/(".implode("|", $Ratings).")\s/", $split[0], $matches);
    $rating = $matches[0];
    return ["title" => $split[1], "rating" => $rating];
}


$string = <<<String
[Titles]
  hollywoodhd1 1 0 8046 0 919 PG-13 6712 1 identity_hd "(HD) Identity Thief" Disk 0 04/15/13 11/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
  hollywoodhd2 3 0 8016 0 930 PG 5347 1 escapep_hd "(HD) Escape from Planet Earth" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
  hollywoodhd3 1 0 8012 0 930 PG-13 5828 1 darkski_hd "(HD) Dark Skies" Disk 0 04/01/13 10/01/13 0 0 0 0 0 0 1 1 0 16000000 H3 16:9 0 0
String;
$titles = explode("\n", $string);
// Remove the first line
unset($titles[0]);

foreach($titles as $title){
    $info = getInfo($title);
    echo "{$info["title"]} : {$info["rating"]}\n";
}

你问了三个问题。为了得到更好的答案,试着把这个问题改写成一个简单的问题。以后你可以问更多的问题。@sgroves很抱歉。这是我的第一个问题。我以后一定会把它们分开。有没有办法只返回标题和评级?我向Ryan Naddy道歉。有没有办法只显示标题和评级而不显示数组。所以它只会显示,(高清)身份盗贼PG-13等。而不是[0]=>数组([title]…是的,只需循环通过该数组并按您的需要显示它。我为您将其转换为函数,看一看,这正是我要找的。谢谢!