检测并转换链接中的url并检测图像并转换为img PHP

时间:2017-03-01 16:35:25

标签: php html regex image

目前,我使用此代码检测并转换文本链接中的URL。

但是现在,我需要保留这个系统,但也检测并转换图像。

public function convert_to_link($text)
{
    $reg_user = '!@(.+)(?:\s|$)!U';
    if (preg_match_all($reg_user, $text, $matches))
    {
        return preg_replace($reg_user, '<a href="../userdetails.php?uname=$0" title="$0">$0</a>', $text);
    }
    $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
    if(preg_match($reg_exUrl, $text, $url)) {
        // make the urls hyper links
        if (preg_match("/\[img=([^\s'\"<>]+?)\]/i", $text))
        {
           //This is not working
            return preg_replace("/\[img=([^\s'\"<>]+?)\]/i", "<img border=0 src=\"\\1\">", $text);
        }
        else
        {
            return preg_replace($reg_exUrl, '<a href="$0" title="$0">$0</a> ', $text);
        }
    }
    else
    {
        return $text;
    }
}

我也使用[img] [/ img]代码将图片转换为但是上面的代码结果很糟糕:

Link

1 个答案:

答案 0 :(得分:0)

看起来你的正则表达式正在寻找这种格式

[img=http://example.com/name.png]

但您的示例采用不同的格式

[img]http://example.com/name.png[/img]

识别第二种形式的正则表达式

"/^\[img\]([^\[]+)\[\/img\]$/i"