我需要一个 preg_match()
语法或类似的东西来提取 JPG 或 PNG 或 来自混合文本的 GIF URL 并将它们放在一个数组中或最后存储第一个 url。
可能是一些搜索以 http 开头并以 jpg/png/gif 结尾的字符串的语法..
我相信它可以用 preg_match()
注意:文本可以是这样的:blablablabla"http://www.example.com/xxx.jpg "blablablabla
最佳答案
请注意在特殊情况下它们可能会欺骗您的服务器插入假匹配。
例如:
http://www.myserver.com/virus.exe?fakeParam=.jpg
或者
http://www.myserver.com/virus.exe#fakeParam=.jpg
我已经快速修改了正则表达式以避免这种情况,但我很确定可能会有更多(例如,在文件路径中插入 %00,并且不能被正则表达式轻易解析)
$matches = array();
preg_match_all('!http://[^?#]+\.(?:jpe?g|png|gif)!Ui' , $string , $matches);
因此,为了安全起见,请始终以最严格的方式使用正则表达式,例如,如果您知道服务器,请将其写入正则表达式,或者如果您知道路径将始终包含字母、连字符、点、斜杠和数字,使用一个表达式,如:
$matches = array();
preg_match_all('!http://[a-z0-9\-\.\/]+\.(?:jpe?g|png|gif)!Ui' , $string , $matches);
这应该可以避免将来出现任何有趣的意外。
关于php - 任何 preg_match() 从文本中提取图像 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2143202/