【发布时间】:2013-08-28 12:42:53
【问题描述】:
eregi() 已弃用,需要替换为 preg_match。如何将以下语法转换为 preg_match?假设以下是 url,它是必需的正则表达式模式:
$url = "https://james.wordpress.com/2013/05/13/my-product-final";
$urlregex = "^(https?|ftp)\:\/\/([a-zåäöÅÄÖæÆøØ0-9+!*(),;?&=\$_.-]+(\:[a-zåäöÅÄÖæÆøØ0-9+!*(),;?&=\$_.-]+)?@)?[a-zåäöÅÄÖæÆøØ0-9+\$_-]+(\.[a-zåäöÅÄÖæÆøØ0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-zåäöÅÄÖæÆøØ0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-zåäöÅÄÖæÆøØ0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-zåäöÅÄÖæÆøØ0-9+\$_.-]*)?\$";
以下代码可以正常工作:
if (eregi($urlregex, $url)) {
echo "Valid";
exit;
}
我尝试转换为“preg_match”,但无法正常工作:
if (preg_match("#$urlregex#i", $url)) {
echo "Valid";
exit;
}
也试过这样:
if (preg_match('/'.$urlregex.'/i', $url))
【问题讨论】:
-
这个有效但不是 100%:if (preg_match("(".$urlregex.")i", $url))
标签: php preg-match eregi