Как заменить эрег? - PullRequest
       39

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

9 голосов
/ 07 февраля 2010

Я получаю следующее сообщение для некоторых 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, но он не смог распознать модификатор = в регулярном выражении ... Я пока не слишком хорошо разбираюсь в регулярном выражении, и для решения этой проблемы требуется, чтобы я изучил потребности регулярного выражения и регулярное выражение preg_match потребности (которые, если я не ошибаюсь, разные) ... Не могли бы вы, ребята, помочь мне с этим?

Спасибо

Ответы [ 3 ]

6 голосов
/ 07 февраля 2010

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

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

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

Итак:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3)
2 голосов
/ 07 февраля 2010

Попробуйте:

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

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

0 голосов
/ 07 февраля 2010

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

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

попробовать:

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