eregi_replace到preg_replace

时间:2012-07-19 11:12:32

标签: php regex

我正在尝试使用preg_replace()修复已弃用的函数eregi_replace()。

$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)', '<a target="_blank" class="clickable" href="\1">\1</a>', $text);

$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a target="_blank" class="clickable" href="http://\2">\2</a>', $text);

我怎样才能让这些与preg_replace()一起使用?我在这里过头了。

1 个答案:

答案 0 :(得分:0)

您只需更改函数的名称并将表达式包装在分隔符中。对于不区分大小写的函数eregi()eregi_replace(),在最后一个分隔符后添加i修饰符:

ereg('...', foo) // preg_match('/.../', foo)
eregi('...', foo) // preg_match('/.../i', foo)
ereg_replace('...', foo) // preg_replace('/.../', foo)
eregi_replace('...', foo) // preg_replace('/.../i', foo)

我在这里使用了/分隔符,但是您需要使用最有意义的分隔符并且不会出现在表达式本身中。

绝大多数(如果不是全部)常用表达式将是直接进位,无需转换。我已经转换了几个大型项目,并且从未遇到过我必须实际修改表达式的情况,但这并不是说没有一些差异。