10

对于必须使用但未编写的某些 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 需要(其中,如果我没记错的话,是不同的)...你们能帮我解决这个问题吗?

谢谢

4

3 回答 3

6

POSIX 扩展正则表达式(POSIX ERE,由 使用ereg)和与Perl 兼容的正则表达式(PCRE,由 使用preg_match)非常相似。除了一些特殊的 POSIX 表达式,PCRE 是 POSIX ERE 的超集。

这意味着您只需将 POSIX ERE 正则表达式放入分隔符(此处/)并转义该字符在正则表达式中的任何出现,您就有一个有效的 PCRE 正则表达式:

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

所以:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3)
于 2010-02-07T19:06:54.653 回答
2

尝试:

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

preg_match 中的正则表达式需要包含在一对分隔符之间,而弃用的 ereg() 函数则不是这种情况。

于 2010-02-07T18:53:30.697 回答
0

preg_家庭希望对正则表达式进行分隔。代替:

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

尝试:

'/^([^=]*)=["\']?([^"\']*)["\']?$/'
于 2010-02-07T18:54:03.180 回答