2

我想在两者之间找到任何东西

"<script> ytplayer" and "ytplayer.config.loaded" .

我的代码如下所示:

preg_match("/\<script\>var\s+ytplayer.+?ytplayer\.config\.loaded/", 

$file_contents, $videosource);

我试图修复它,但它没有。

4

3 回答 3

1

创建一个捕获组:

preg_match("/\<script\>var\s+ytplayer(.+?)ytplayer\.config\.loaded/", $file_contents, $videosource);
//           note the parens      ___^ __^

捕获将在$videosource[1]

于 2013-06-20T15:23:41.043 回答
0

它应该是...

preg_match("/\\<script\\> ytplayer(.+)ytplayer\\.config\\.loaded/", $file_contents, $videosource);

注意双重转义。您必须使用两个反斜杠,因为与while"\<"的含义相同,与. 同样正如 M42 指出的那样,您应该围绕中间的东西进行分组。这使得中间的东西在.<"\\<"\<$videosource[1]

如果您希望匹配不区分大小写,可以使用此

preg_match("/\\<script\\> ytplayer(.+)ytplayer\\.config\\.loaded/i", $file_contents, $videosource);

i则表达式末尾的 使其不区分大小写。

于 2013-06-21T01:29:29.137 回答
0

除非您使用通配符,否则 RegEx 是文字。只使用必要的部分可能更容易。为此,您可以使用带有原子分组的环视。

$pattern = "!(?<=(ytplayer)).*(?=(ytplayer))!";
preg_match($pattern,$file_contents,$matches);

$videosource = $matches[0];
于 2013-06-21T02:05:32.790 回答