需要 ereg_replace 的帮助(已弃用)

Posted

技术标签:

【中文标题】需要 ereg_replace 的帮助(已弃用)【英文标题】:need an help for ereg_replace (deprecated) 【发布时间】:2013-08-27 18:09:36 【问题描述】:

您好,我在 2 或 3 年前写过一些脚本。现在它没有运行。 我的脚本:

<?php
 function tolink($text)

    $text = " ".$text;
    $text = ereg_replace('(((f|ht)1tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
            '<a href="\\1" target="_blank" rel="nofollow">\\1</a>', $text);
    $text = ereg_replace('(((f|ht)1tps://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
            '<a href="\\1" target="_blank" rel="nofollow">\\1</a>', $text);
    $text = ereg_replace('([[:space:]()[])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
    '\\1<a href="http://\\2" target="_blank" rel="nofollow">\\2</a>', $text);
    $text = ereg_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]2,4)',
    '<a href="mailto:\\1"  rel="nofollow">\\1</a>', $text);
    return $text;
    

    ?>

当我用 preg_replace 替换 ereg_replace 时,它​​给了我一个错误。

我需要你的帮助...谢谢...

【问题讨论】:

How can I convert ereg expressions to preg in PHP?的可能重复 【参考方案1】:

PHP 中的所有 PCRE 函数都要求您使用一对分隔符将正则表达式括起来,例如在此示例中,围绕正则表达式的 /

preg_replace ('/regexp_to_match/', 'replacement', $text);

这允许您在第二个分隔符之后将修饰符附加到正则表达式,如下所示:

preg_replace ('#regexp_to_match#i', 'replacement', $text);

执行不区分大小写的匹配。

从这两个示例中可以看出,分隔符可以是任何字符。正则表达式的第一个字符作为分隔符,然后在末尾查找匹配项。如果字符是一个括号字符,它会寻找它的反义词,例如

preg_match ('<x*>', $text);

这是您第一次替换的preg_replace() 版本。

  $text = preg_replace('<(((f|ht)1tp://)[-\w@:%+.~#?&/=]+)>',
        '<a href="$1" target="_blank" rel="nofollow">$1</a>', $text);

我还简化了正则表达式:我将\w 用于单词字符,而不是明确列出字母数字,删除了+ 之前在[...] 中不必要的\,并将// 更改为@987654332 @ 在括号内(多余的斜线是多余的)。此外,现在替换时首选$1,而不是\\1

【讨论】:

我试过 $text = preg_replace('/(((f|ht)1tp://)[-a-zA-Z0-9@:%_\+. ~#?&//=]+)/', '\\1', $text); 您需要转义正则表达式中的所有/ 字符,因为您使用它作为分隔符。或者使用不同的字符作为分隔符,一个不在正则表达式中的字符。 我都试过了,但还是不行……你能举个例子吗?

以上是关于需要 ereg_replace 的帮助(已弃用)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 'showSnackBar' 已弃用 - 如何更新?

似乎无法关闭 php 中已弃用的错误

我如何使已弃用的 FSPathMakeRef、FSIsAliasFile、FSResolveAliasFileWithMountFlags、FSRefMakePath 现代化

我该如何调整这个已弃用的 StratifiedKFold 代码

mpdf 错误 - preg_replace(): /e 修饰符已弃用,请改用 preg_replace_callback

警告 onRowClick 已弃用