在preg_match中错误(“/ \ <script \> </script \>

时间:2013-06-20 13:50:00

标签: php preg-match

我想在

之间找到任何东西
"<script> ytplayer" and "ytplayer.config.loaded" .

我的代码如下所示:

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

$file_contents, $videosource);

我试图解决它,但事实并非如此。

3 个答案:

答案 0 :(得分:1)

建立一个捕获组:

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

捕获将在$videosource[1]

答案 1 :(得分:0)

应该是......

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

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

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

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

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

答案 2 :(得分:0)

除非您使用通配符,否则RegEx是字面值。仅使用必要的部件可能更容易。为此,您可以使用原子分组的外观。

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

$videosource = $matches[0];