Чем заменить эрег?

Я получаю следующее сообщение для некоторого php, который я должен использовать, но не писал:

Deprecated: Function ereg() is deprecated in /opt/lampp/htdocs/webEchange/SiteWeb_V5/inc/html2fpdf.php on line 466

Это строка 466:

if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))

Я попытался просто заменить на preg_match, но он не смог распознать модификатор = в регулярном выражении. Я еще не слишком хорошо разбираюсь в регулярных выражениях, и для решения этой проблемы требуется, чтобы я узнал потребности regexp ereg И потребности regexp preg_match (которые , если не ошибаюсь, отличается)... Не могли бы вы, ребята, помочь мне с этим?

Спасибо


person Shawn    schedule 07.02.2010    source источник
comment
Возможный дубликат Как преобразовать выражения ereg в preg в PHP?   -  person Meloman    schedule 14.09.2017


Ответы (3)


Расширенные регулярные выражения POSIX (POSIX ERE, используется ereg) и совместимые с Perl регулярные выражения (PCRE, используется preg_match) очень похожи. За исключением некоторых специальных выражений POSIX, PCRE является надмножеством POSIX ERE.

Это означает, что вам просто нужно поместить ваши регулярные выражения POSIX ERE в разделители ( здесь /) и избегайте любого вхождения этого символа в регулярное выражение, и у вас есть действительное регулярное выражение PCRE:

/^([^=]*)=["']?([^"']*)["']?$/

So:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3)
person Gumbo    schedule 07.02.2010
comment
Не совсем надмножество (кроме классов персонажей), например. сопоставление /AB|ABC/ с ABCD с помощью ERE даст самое длинное совпадение (ABC), но PCRE даст первое совпадение (AB). - person kennytm; 07.02.2010

Пытаться:

if(preg_match('~^([^=]*)=["\']?([^"\']*)["\']?$~',$v,$a3))

Регулярное выражение в preg_match должно быть заключено между парой разделителей, чего нельзя сказать о устаревшей функции ereg().

person codaddict    schedule 07.02.2010

семейство preg_ ожидает, что регулярное выражение будет ограничено. Вместо:

'^([^=]*)=["\']?([^"\']*)["\']?$'

пытаться:

'/^([^=]*)=["\']?([^"\']*)["\']?$/'
person Bart Kiers    schedule 07.02.2010