我知道还有其他主题,但大多数都有不同的问题。 我试图匹配纯文本中的图像网址并将其转换为标记,但正则表达式无法正常工作
/(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以匹配最后一个网址格式?
答案 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);