我得到以下消息,我必须使用但不写的一些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需要(如果我没有记错的话,那是不同的)......你们可以帮我解决这个问题吗?
由于
答案 0 :(得分:6)
POSIX扩展正则表达式(POSIX ERE,由ereg
使用)和 Perl-combatible正则表达式(PCRE,由preg_match
使用)非常相似。除some special POSIX expressions外,PCRE是POSIX ERE的超集。
这意味着您只需将POSIX ERE正则表达式放入delimiters(此处为/
)并转义正则表达式中该字符的任何出现,并且您有一个有效的PCRE正则表达式:< / p>
/^([^=]*)=["']?([^"']*)["']?$/
所以:
preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3)
答案 1 :(得分:2)
尝试:
if(preg_match('~^([^=]*)=["\']?([^"\']*)["\']?$~',$v,$a3))
preg_match中的正则表达式需要包含在一对分隔符之间,而不推荐使用的是ereg()函数。
答案 2 :(得分:0)
preg_
系列期望正则表达式被分隔。而不是:
'^([^=]*)=["\']?([^"\']*)["\']?$'
尝试:
'/^([^=]*)=["\']?([^"\']*)["\']?$/'