2010-06-29 27 views
1

爲了PHP 5.3/6.0的兼容,我需要將一些簡單的eregi正則表達式移植到preg_match在PHP中需要一些正則表達式的幫助

因爲我不是在我需要一些幫助我的正則表達式移植的技能太自信了......

#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

你的第二個片段是幾乎一樣的第一,只是額外的條件。我會猜測你的實際代碼(或者你希望它的工作方式)與提出的有些不同嗎?如果是這樣,請你詳細說明這些差異嗎?

無論哪種方式,您的#2可能看起來類似於#1。

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

採用~delimiters可能很陌生;理由是正則表達式包含最常用的分隔字符(/),所以使用替代方法而不是像在問題中那樣轉義斜線。

+0

#1和#2是不同(但相似)的問題。我已經移植了#1,但我不確定我的實施情況。對於#2,我需要幫助來做到這一點。 – AlexV 2010-06-29 19:53:56

+0

我當前的答案將#2轉換爲'preg_match'-使用與您的#1類似的代碼片段(這很好)。如果你有一個特定的問題,你想解決的問題或任務,請詳細說明。就目前而言,我已經完成了你似乎在問的問題。 – salathe 2010-06-29 20:04:14

+0

只是你的答案中的一個問題,我可以把任何情況下的「酒吧」(酒吧,酒吧,巴...),它會匹配(beasause〜我)? – AlexV 2010-06-29 20:24:52