2010-06-29 3 views
1

Мне нужно передать некоторые простые eregi регулярные выражения в preg_match для компиляции PHP 5.3/6.0.Нужна помощь с некоторыми регулярными выражениями в 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

+0

Мой текущий ответ перевел вас №2 в «preg_match» -принцип, похожий на ваш №1 (это прекрасно). Если у вас есть конкретный вопрос, проблема или задача, которые вы хотите решить, пожалуйста, уточните. Как бы то ни было, я сделал то, о чем вы спрашиваете. – salathe

+0

Вопрос только в вашем ответе. Я могу поставить «бар» в любом случае (Bar, BAR, bAr ...), и он будет соответствовать (beasause ~ i)? – AlexV

Смежные вопросы