2010-09-15 83 views
0

我想用正則表達式來匹配Youtube URL,看看它是否有效。這是我的代碼:preg_match問題

if(preg_match('\bhttp://youtube.com/watch\?v=.*\b', $link)) 
{ 
    echo "matched youtube"; 
} 

但我發現了一個錯誤:

Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\ajax\youtube.php on line 22 

我承認我是一個完整的新手,正則表達式,我不太多理解他們,但我試圖學習,因爲我這樣做。我做了使用這個在線工具的正則表達式上述正則表達式:

http://gskinner.com/RegExr/

,並在那裏工作。那麼我在做什麼錯了,是否有更好的方法來驗證YouTube網址?

謝謝。 :)

回答

0

您應該添加除定界符到您的正則表達式。這是用來提供可選參數:

preg_match('"\bhttp://youtube.com/watch\?v=.*\b"', $link) 

符號/通常被用作正則表達式分隔符,但在你的情況下,它會迫使內/進行轉義。所以爲了更清晰的視圖,我建議使用"

1

真的沒有必要的preg_match這裏:

$url = "http://youtube.com/watch?v=abc"; 
if(strpos($url, "http://youtube.com/watch?v=") === 0) { 
    echo "Valid"; 
} 
1

PCRE要求delimiters將正則表達式和可選modifiers分開。

在這種情況下,假定爲\,但\不是有效的分隔符(請參閱錯誤消息)。使用不同的性格像~

preg_match('~\bhttp://youtube\.com/watch\?v=.*\b~', $link) 
0

使用的preg_match,則正則表達式需要適當的分隔符括起來。

例如:

preg_match('/\bhttp://youtube.com/watch\?v=.*\b/', $link) 

在您的例子\ b表示字邊界,這不是有效的字母數字定界符,因此錯誤消息