3

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))
4

3 回答 3

1

尝试这个 :-

$url = "https://james.wordpress.com/2013/05/13/my-product-final";
if (preg_match("/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i",$url))
{
echo "Valid";
exit;
}

filter_var()函数还可以验证字符串是否为 URL

于 2013-08-28T12:56:14.967 回答
1

它不起作用,因为您用作分隔符的字符(即。#)存在于正则表达式中。

你可以:

  • 在正则表达式中转义#\#
  • 将分隔符更改为正则表达式中不存在的字符
于 2013-08-28T13:06:48.080 回答
0
$website = "http://googl.com";

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
  {
  $websiteErr = "Invalid URL"; 
  }
于 2013-11-26T09:52:23.387 回答