致命错误:(在类中)无法重新声明 replaceurl()(之前在 www/link.php 中声明


Fatal error: (in a class) Cannot redeclare replaceurl() (previously declared in www/link.php

我有一个处理数据并提取链接、电子邮件和主题标签的类,我遇到的问题是当我多次调用该类时,它会给出错误Fatal error: Cannot redeclare replaceurl() (previously declared in C:'wamp'www'ln.php:13)

这是类

 class HtmlLinkUtility
    {
        public static $BaseDomain = null;
        public static function ReplaceEmailToHtmlLink($source)
        {
            return preg_replace('/([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+'.)+[a-z]{2,3})/i',
                '<a href="mailto:'1">'1</a>', $source);
        }
        public static function ReplaceUrlToHtmlLink($source)
        {
            function replaceUrl($groups) {
                $url = $groups[1];
                return '<a href="' . $url . '"' . (strpos($url, HtmlLinkUtility::$BaseDomain) !== false ?
                    ' target="_blank"' : '') . '>' . $url . '</a>';
            }
            return preg_replace_callback('!(((f|ht){1}(tp://|tps)|(www.))[-a-zA-Z0-9@:%_+.~#?&//=]+)!i',
                replaceUrl, $source);
        }
        public static function Htags($source){ 
        $regex = "/#+([a-zA-Z0-9_]+)/"; 
        $source = preg_replace($regex, '<a href="tag.php?tag=$1">$0</a>', $source); 
        return $source; 
        }
        public static function ReplaceTextDataToLinks($source, $baseDomain)
        {
            self::$BaseDomain = $baseDomain;
            return self::Htags(self::ReplaceUrlToHtmlLink(self::ReplaceEmailToHtmlLink($source)));
        }
    }
echo  HtmlLinkUtility::ReplaceTextDataToLinks("test@test.com<br />http://www.google.com/<br />http://www.test.com/ #madekir", "ivotism.com");
echo  HtmlLinkUtility::ReplaceTextDataToLinks("test@test.com<br />http://www.google.com/<br />http://www.test.com/ #madekir", "ivotism.com");
echo  HtmlLinkUtility::ReplaceTextDataToLinks("test@test.com<br />http://www.google.com/<br />http://www.test.com/ #madekir", "ivotism.com");

第一个echo工作正常,第二个和第三个不会,它会产生上面的错误,请有人帮我,怎么了?

您可能

想使用匿名函数。将您的代码切换到以下内容:

    public static function ReplaceUrlToHtmlLink($source)
    {
       return preg_replace_callback('!(((f|ht){1}(tp://|tps)|(www.))[-a-zA-Z0-9@:%_+.~#?&//=]+)!i', function ($groups) {
            $url = $groups[1];
            return '<a href="' . $url . '"' . (strpos($url, HtmlLinkUtility::$BaseDomain) !== false ?' target="_blank"' : '') . '>' . $url . '</a>';
        }, $source);
    }

这就是我最终实现它的方式。

 public static function ReplaceUrlToHtmlLink($source)
        {
            if (!function_exists("replaceUrl")){
            function replaceUrl($groups) {
                $url = $groups[1];
                return '<a href="' . $url . '"' . (strpos($url, HtmlLinkUtility::$BaseDomain) !== false ?
                    ' target="_blank"' : '') . '>' . $url . '</a>';
            }
            }
            return preg_replace_callback('!(((f|ht){1}(tp://|tps)|(www.))[-a-zA-Z0-9@:%_+.~#?&//=]+)!i',
                replaceUrl, $source);
        }