2010-06-10 59 views
1

我有这样的正则表达式用于获取YouTube视频ID:的preg_match()未知的修饰词 '[' 帮助

(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+ 

我从那里得到它:Regex to parse youtube yid

的问题是,我得到preg_match() Unknown modifier '['警告。

我知道我必须附上正则表达式分隔符,但我不知道如何做到这一点。

任何帮助?

+3

添加您的正则表达式 – 2010-06-10 03:13:16

+2

内斜杠分隔符你划定的正则表达式在你的代码?即'/ expression /' – Amber 2010-06-10 03:13:38

回答

5

尝试以下操作:

<?php 
    $str = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I"; 
    $pattern = '#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#'; 
    preg_match($pattern, $str, $matches); 
    print_r($matches); 
?> 

注意,我使用#作为分隔符这里只是因为上述正则表达式中包含正斜杠和逃避他们,使表达更加难以阅读。这清除了几个像素。

+0

我需要PREG_OFFSET_CAPTURE,3? – Jonathan 2010-06-10 03:21:48

+0

不,你没有,我修改了代码以反映你正在寻找的东西。 – randombits 2010-06-10 03:26:31

0

我正则表达式是以下:

[A-ZA-Z] {3} \ d {4} [A-ZA-Z] {4}

我把它如下:

if (!preg_match("[A-Za-z]{3}\d{4}[A-Za-z]{4}", trim($search_query))) { return false; } 

但它给我回了以下警告:

一个PHP错误遇到

严重性:警告消息:的preg_match():未知的修饰词 '{' 文件名:型号/ room_reservation_model.php行号:61

后来我在一些该注意从以下link他们已经把正则表达式模式中的两个“/”如下:

$name = test_input($_POST["name"]); 
if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
    $nameErr = "Only letters and white space allowed"; 
} 

所以我也把“/”前的那两个第二我RgeEx模式后如下,问题解决了:

if (!preg_match("/[A-Za-z]{3}\d{4}[A-Za-z]{4}/", trim($search_query))) { return false; } 
相关问题