Я получаю следующее сообщение для некоторого 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 потребности (который, если я не ошибаюсь, отличается)... Могли Вы парни выручать меня с этим?
Спасибо
Расширенные регулярные выражения POSIX (POSIX ERE, используется ereg
) и Совместимые с Perl регулярные выражения (PCRE, используется preg_match
) очень похожи. За исключением некоторых специальных выражений POSIX , PCRE является надмножеством POSIX ERE.
Это означает, что вам просто нужно поместить свои регулярные выражения POSIX ERE в разделители (здесь /
) и исключить любое вхождение этого символа внутри регулярного выражения, и у вас есть действительный PCRE. регулярное выражение:
/^([^=]*)=["']?([^"']*)["']?$/
Итак:
preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3)
Попробуйте:
if(preg_match('~^([^=]*)=["\']?([^"\']*)["\']?$~',$v,$a3))
Регекс в preg_match должен быть вложен между парой разделителей, чего нельзя сказать об устаревшей функции ereg().
семейство preg_
ожидает, что регекс будет делимитирован. Вместо этого:
'^([^=]*)=["\']?([^"\']*)["\']?$'
try:
'/^([^=]*)=["\']?([^"\']*)["\']?$/'