Regex和preg_replace - 如何格式化嵌入的图像

时间:2013-09-26 20:23:21

标签: php regex

我想在html页面上将图像的超链接发布到嵌入图像中。所以,我正在设置一些正则表达式语法,但我遇到了困难 我希望有人可以提供帮助。

我想转而,例如;

http://www.example.com/images/some_directory/logo.png

进入

<img src='http://www.example.com/images/some_directory/logo.png'>

所以,我希望能够为所有典型的图像类型执行此操作。到目前为止,我已经拼凑了这个,但无法弄清楚如何完成语法。

<?php 

$pic = 'http://www.example.com/images/some_directory/logo.png';

function post_image($pic)
    {
    return preg_replace('!((http(s)?://)[-a-z]+)!', '<img src="$1">', $pic);
    }
$pic = post_image($pic);

echo $pic;

2 个答案:

答案 0 :(得分:1)

你也许可以尝试这样的正则表达式:

'!((?:https?://)?[-a-z_/.]+\.(?:png|jpg|bmp|gif))!i'

我放了pngjpgbmpgif的扩展名;如果你愿意,你可以添加更多。

答案 1 :(得分:0)

使用preg_match然后在你的网址周围构建<img src...字符串可能会更容易,如果它是正确的 - 这样的话吗?

<?php 
$pic = 'https://example.com/i/like/aardvarks.gif';


function post_image($pic)
{
    $pattern = '^(?:http|https).*(?:\.jpg|\.jpeg|\.png|\.gif)$';

    if (preg_match($pattern, $pic))
        return '<img src="{$pic}">';
    else
        return $pic;
}

$pic = post_image($pic);

echo $pic;

您可能还想将i-modifier (same for javascript and php, so this guide will work fine)添加到正则表达式的末尾,以忽略大小写(因为您可能会获得JPEG,jPEG,JPG,gIf以及各种有趣的变体)。