[英]Need help with some regular expressions in PHP
我需要将一些简单的eregi正则表达式移植到preg_match以便进行PHP 5.3 / 6.0编译。
由于我对正则表达式的移植技巧不太自信,因此我需要一些帮助...
#1
旧版本:
if( eregi('foo',$myVar) ) {
$aresult = explode('/',stristr($myVar,'foo'));
$aversion = explode(' ',$aresult[1]);
}
新版本:
if( preg_match('/Foo\/([^ ]*)/i',$myVar,$matches) ) {
$aversion = $matches[1];
}
#2
旧版本:
if( eregi('bar',$myVar) && ! eregi('rv:[0-9]\.[0-9]\.[0-9]',$myVar)) {
$aresult = explode('/',stristr($myVar,'bar'));
$aversion = explode(' ',$aresult[1]);
}
新版本:
//Not done yet need help
您的第二个代码段与第一个代码段几乎相同,只是有额外的条件。 我猜测您的实际代码(或您希望它的工作方式)与所提供的代码有些不同? 如果是这样,请您详细说明这些差异?
无论哪种方式,您的#2看起来都可能与#1相似。
if (preg_match('~bar/([^ ]*)~i', $myVar, $match) && ! preg_match('/rv:[0-9]\.[0-9]\.[0-9]/', $myVar)) {
$aversion = $match[1];
}
使用~
作为分隔符似乎很奇怪; 原因是正则表达式包含最常用的定界字符( /
),因此可以使用替代方法而不是像在问题中那样转义斜线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.