0

我正在尝试使用 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() 一起工作?我在这里过头了。

4

1 回答 1

0

您只需更改函数的名称并将表达式包装在分隔符中。对于不区分大小写的函数eregi()and 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)

我在/这里使用了定界符,但您需要使用最有意义且不会出现在您的表达式本身中的任何定界符。

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

于 2012-07-19T12:41:41.043 回答