需要PHP中的一些正则表达式的帮助

时间:2010-06-29 19:33:01

标签: php regex

我需要将一些简单的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

1 个答案:

答案 0 :(得分:1)

您的第二个片段与第一个片段几乎相同,只是具有额外条件。我猜你的实际代码(或者你希望它如何工作)与提出的代码有点不同?如果是这样,你能详细说明这些差异吗?

无论哪种方式,你的#2看起来都类似于#1。

if (preg_match('~bar/([^ ]*)~i', $myVar, $match) && ! preg_match('/rv:[0-9]\.[0-9]\.[0-9]/', $myVar)) {
    $aversion = $match[1];
}

使用~作为delimiters可能看起来很奇怪;原因是正则表达式包含最常用的分隔符(/),因此使用替代方法而不是像在问题中那样转义斜杠。