2015-09-14 27 views
0

我做了這個腳本,要求用戶輸入一個facebook網址。該部分工作正常,但用戶仍然可以在url變量中添加特殊字符,並且我試圖阻止這一點。正則表達式來檢查facebook網址,並且只能是字母數字。

我希望正則表達式只允許字母數字字符,破折號和下劃線。而不是允許空格。

我試着將[a-zA-Z0-9_]添加到我的正則表達式中,但它不起作用。

<?php 
$facebook_url = "http://www.facebook.com/user"; 

if(!preg_match('^facebook\.com\S*[a-zA-Z0-9_]*^', $facebook_url)){ 
//if(!preg_match('^http://(?:.*\.)?facebook\.com\S*[a-zA-Z0-9_]*^', $facebook_url)){ 

    echo "ummm, this is not a facebook url"; 

} else { 

    echo "this is a facebook url"; 

} 
?> 

<br /> 

<a href="<?php echo $facebook_url?>" target="_blank">My Facebook</a> 
+0

'\ S *'匹配任何不是空白字符的字符。刪除它,看看它是否有效。您可能需要調整'[a-zA-Z0-9_]',例如添加''''''或'/','-'(末尾)等。 –

回答

1

你應該刪除'^'字符。 (此符號表示行的開頭)

preg_match('/(https?:\/\/)?([\w\.]*)facebook\.com\/([a-zA-Z0-9_]*)$/', $facebook_url) 
+0

我仍然希望以下內容成爲可接受的網址 http://www.facebook.com/user www.facebook.com /用戶 facebook.com/user – brewpixels

+0

@brewpixels我改變了模式,再試一次 – Bookin

+0

謝謝,這有效,我只是改變了一點,因爲我需要破折號。 [a-zA-Z0-9_-] – brewpixels

0

請從開頭和結尾刪除'^'字符。使用這個:

'facebook\.com\/[a-zA-Z0-9_]*$' 

P.S.下劃線('_')也可以在網址中使用。沒有下劃線:

'facebook\.com\/[a-zA-Z0-9]*$' 
相關問題