Как заменить ereg?

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

Спасибо

10
задан Gumbo 5 August 2010 в 10:26
поделиться

3 ответа

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

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

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

Итак:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3)
6
ответ дан 4 December 2019 в 02:26
поделиться

Попробуйте:

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

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

2
ответ дан 4 December 2019 в 02:26
поделиться

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

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

try:

'/^([^=]*)=["\']?([^"\']*)["\']?$/'
0
ответ дан 4 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: