2010-06-10 97 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; } 
相關問題