正则表达式将纯图像URL转换为img标签

时间:2014-07-07 23:23:30

标签: php regex image preg-replace preg-match

我知道还有其他主题,但大多数都有不同的问题。 我试图匹配纯文本中的图像网址并将其转换为标记,但正则表达式无法正常工作

/(http|https):\/\/(\S*)\.(jpg|gif|png)(\?(\S*))?/i

上面的内容应该与url string匹配一个图像:

http://www.example.com/landscape.jpg?w=120

且没有查询字符串:

http://www.example.com/landscape.jpg

但它不应与此匹配,注意到最后的X

http://www.example.com/landscape.jpgx

这不是图像的网址,而且我当前的正则表达式匹配,我如何调整regext以匹配最后一个网址格式?

3 个答案:

答案 0 :(得分:1)

你可以在末尾添加一个lookahead来检查url 之后的下一个字符(这里是一个空白字符,字符串的结尾或标点字符)

~https?://\S+\.(?:jpe?g|gif|png)(?:\?\S*)?(?=\s|$|\pP)~i

答案 1 :(得分:0)

试试这个:

'/^https?\:\/\/\S+\.(jpg|gif|png)(\?\S+\=\S+)?$/i'

答案 2 :(得分:0)

试试这个......

$string = 'This is image inside text string http://localhost/test/something.jpg?xml=10, http://google.com/logo.png'; 
function _callback($matches){
return '<img src="'.$matches[0].'" />'
}

echo preg_replace_callback('/https?:\/\/(.*?)\.(jpg|png|gif)(\?\w+=\w+)?/i', '_callback', $string);