2013-03-24 43 views
2

我有一個自動網站,我有一個名爲SAVE SEARCH的功能,它保存了用戶在網站上進行的搜索以備將來使用。我所做的是我將整個網址保存在數據庫中。如何驗證有很多querystrings的網址

但我需要驗證它作爲一個有效的網址。它看起來像這樣。

http://www.anywebsite.com/cars.php?postcode=CV2+5AS&distance=&make=&min_price=&max_price=&category_type=&body_type=&fuel=&colour=&transmission=&year_of_registration=&mileage=&engine=&doors=&seller=&keywords=&sort=PRICE_LOWEST&referer_url=http%253A%252F%252Flocalhost%252Fselling%252Fcars.php&trader_id=0&case=ADVANCE 

任何人都可以請我提供任何想法,我怎麼能實現它?

我有preg_match在這裏。

if (!preg_match('/^https?:(\/\/)?(www\.)?([a-zA-Z0-9_%]*)\b\.[a-z]{2,4}(\.[a-z]{2})?/', $fields[$field_name])) 

但它僅驗證網址,如http://www.anywebsite.com,而我需要驗證上述網址全部。

任何幫助將不勝感激。

+3

爲什麼推倒重來的時候,你可以做[filter_var(http://php.net/manual/en/function.filter-var.php)?然後使用過濾器[FILTER_VALIDATE_URL](http://www.php.net/manual/en/filter.filters.validate.php) – Class 2013-03-24 05:32:09

回答

3

不應該有一個原因,你需要手工編碼URL驗證,這個問題已經解決了。

看看php的filter_var()。 URL驗證

例子:http://www.w3schools.com/php/filter_validate_url.asp

$url = "http://www.anywebsite.com/cars.php?postcode=CV2+5AS&distance=&make=&min_price=&max_price=&category_type=&body_type=&fuel=&colour=&transmission=&year_of_registration=&mileage=&engine=&doors=&seller=&keywords=&sort=PRICE_LOWEST&referer_url=http%253A%252F%252Flocalhost%252Fselling%252Fcars.php&trader_id=0&case=ADVANCE"; 

if (!filter_var($url, FILTER_VALIDATE_URL)) { 
    echo "URL is not valid"; 
} 
else { 
    echo "URL is valid"; 
} 
2

爲什麼推倒重來的時候,你可以做filter_var()?然後使用過濾器FILTER_VALIDATE_URL filter_var適用於PHP 5> = 5.2.0您也可以添加FILTER_FLAG_HOST_REQUIRED以獲得所需的域名,我相信您會需要它,並且您可以查看其他標誌以查看是否需要它們。

例子:

$url = 'http://www.anywebsite.com/cars.php?postcode=CV2+5AS&distance=&make=&min_price=&max_price=&category_type=&body_type=&fuel=&colour=&transmission=&year_of_registration=&mileage=&engine=&doors=&seller=&keywords=&sort=PRICE_LOWEST&referer_url=http%253A%252F%252Flocalhost%252Fselling%252Fcars.php&trader_id=0&case=ADVANCE'; 
if(filter_var($url, FILTER_VALIDATE_URL)){ 
    #do stuff here 
}else{ 
    #invalid 
} 

工作例如:http://ideone.com/N84VGF

,如果你有PHP的一箇舊版本,你可以使用parse_url()但你必須添加一個正則表達式/驗證,因爲它不驗證如果它是一個真實/有效的網址。

3