preg替换图像链接

时间:2011-02-26 18:55:55

标签: php

我正在尝试preg_replace图片链接,但前提是它以.jpg,.gif,.png结尾。

 http://exampel.com/1/themes/b2/images/4/image1.jpg

<img src="http://exampel.com/1/themes/b2/images/4/image1.jpg" alt="" width="" height="" />

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:6)

不确定它是否会完全回答您的问题,但您至少应该能够将此作为基础......

这样的事情:

$str = <<<TEST
here is
some text and an image http://exampel.com/1/themes/b2/images/4/image1.jpg ?
and some other http://exampel.com/1/themes/b2/images/4/image1.gif and
a link that should not be replaced : http://exampel.com/test.html !
TEST;

$output = preg_replace('#(http://([^\s]*)\.(jpg|gif|png))#', 
                '<img src="$1" alt="" width="" height="" />', $str);
var_dump($output);


在我的例子中,我得到以下输出:

string 'here is
some text and an image <img src="http://exampel.com/1/themes/b2/images/4/image1.jpg" alt="" width="" height="" /> ?
and some other <img src="http://exampel.com/1/themes/b2/images/4/image1.gif" alt="" width="" height="" /> and
a link that should not be replaced : http://exampel.com/test.html !' (length=301)

两个图像链接已被替换,没有其他任何内容被触及 - 特别是非图像链接。


我使用的正则表达匹配:

  • http://
  • 开头的内容
  • 包含任何不是白色字符(空格,制表,换行符)的内容[^\s]*
  • 然后,包含一个点:\.
  • ,最后,您定义的与图片对应的扩展程序之一:(jpg|gif|png)

然后,所有匹配的字符串都会被注入<img>标记。