[英]Asterisk in eregi
//URL START
$urlregex = "^(https?|ftp)\:\/\/";
// USER AND PASS
$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?";
// HOSTNAME OR IP
$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*";
// PORT
$urlregex .= "(\:[0-9]{2,5})?";
// PATH
$urlregex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?";
// GET Query
$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?";
// ANCHOR
$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
// check
if (eregi($urlregex, $url)) {echo "good";} else {echo "bad";}
但是如果我有http://www.example.com/about-me/my-4*-hotel/
該怎么辦
由於星號,該eregi檢查無效。 我該怎么辦?
從文檔中 :
自PHP 5.3.0起已棄用此功能。 強烈建議不要使用此功能。
使用帶有FILTER_VALIDATE_URL的filter_var代替。 或者,如果您堅持使用正則表達式,則使用preg_*
。
我認為您的問題出在URL,而不是正則表達式。 上次我檢查時,URL的路徑部分中不允許使用星號。 如果您確實需要一個星號,則應將其轉義:
http://www.example.com/about-me/my-4%2A-hotel/
您可以更改正則表達式以允許加星號...
$urlregex .= "(\/([a-z0-9+\$_*-].?)+)*\/?";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.