警告:preg_match():未知修饰符“.”更换ereg后
Warning: preg_match(): Unknown modifier '.' after replacing ereg
我有这个原始代码:
/**
* IP address conversion: A.B.C.D -> log
*
* @param string $string IP Address: A.B.C.D
* @return long
* @access private
* @static
* @since 1.0
*/
private function convert2number($string)
{
$pattern= "\"([0-9]+)\"";
if (ereg($pattern, $string, $regs))
return (int)$regs[1];
}
/**
* IP conversion
*
* @param string $address IP address in the A.B.C.D format
* @return long
* @access private
* @static
* @since 1.0
*/
private function IpAddress2IpNumber($address)
{
$pattern = "([0-9]+).([0-9]+).([0-9]+).([0-9]+)";
if (ereg($pattern, $address, $regs))
return $number = $regs[1] * 256 * 256 * 256 + $regs[2] * 256 * 256 + $regs[3] * 256 + $regs[4];
else
return false;
}
自 PHP 5.3 以来,ereg
已弃用,我对此进行了研究,并且偶然发现了将 ereg
替换为 preg_match
的建议,我这样做了,并且我收到一个新错误:
Warning: preg_match(): Unknown modifier '.' in geoip.php on line 222
代码:
/**
* IP conversion
*
* @param string $address IP address in the A.B.C.D format
* @return long
* @access private
* @static
* @since 1.0
*/
private function IpAddress2IpNumber($address)
{
$pattern = "([0-9]+).([0-9]+).([0-9]+).([0-9]+)";
if (preg_match($pattern, $address, $regs))
return $number = $regs[1] * 256 * 256 * 256 + $regs[2] * 256 * 256 + $regs[3] * 256 + $regs[4];
else
return false;
}
我该如何解决这个问题?有什么推荐吗?谢谢!
您需要在 preg_match
中使用定界符。参见 the docs on this topic。
- “。”需要一个“\”来避免它被当作任何字符。
模式需要 preg_match 的定界符。
$pattern = "|([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)|";
我有这个原始代码:
/**
* IP address conversion: A.B.C.D -> log
*
* @param string $string IP Address: A.B.C.D
* @return long
* @access private
* @static
* @since 1.0
*/
private function convert2number($string)
{
$pattern= "\"([0-9]+)\"";
if (ereg($pattern, $string, $regs))
return (int)$regs[1];
}
/**
* IP conversion
*
* @param string $address IP address in the A.B.C.D format
* @return long
* @access private
* @static
* @since 1.0
*/
private function IpAddress2IpNumber($address)
{
$pattern = "([0-9]+).([0-9]+).([0-9]+).([0-9]+)";
if (ereg($pattern, $address, $regs))
return $number = $regs[1] * 256 * 256 * 256 + $regs[2] * 256 * 256 + $regs[3] * 256 + $regs[4];
else
return false;
}
自 PHP 5.3 以来,ereg
已弃用,我对此进行了研究,并且偶然发现了将 ereg
替换为 preg_match
的建议,我这样做了,并且我收到一个新错误:
Warning: preg_match(): Unknown modifier '.' in geoip.php on line 222
代码:
/**
* IP conversion
*
* @param string $address IP address in the A.B.C.D format
* @return long
* @access private
* @static
* @since 1.0
*/
private function IpAddress2IpNumber($address)
{
$pattern = "([0-9]+).([0-9]+).([0-9]+).([0-9]+)";
if (preg_match($pattern, $address, $regs))
return $number = $regs[1] * 256 * 256 * 256 + $regs[2] * 256 * 256 + $regs[3] * 256 + $regs[4];
else
return false;
}
我该如何解决这个问题?有什么推荐吗?谢谢!
您需要在 preg_match
中使用定界符。参见 the docs on this topic。
- “。”需要一个“\”来避免它被当作任何字符。
模式需要 preg_match 的定界符。
$pattern = "|([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)|";