任何preg_match()从文本中提取图像网址?

Rya*_*yan 4 php regex preg-match

我需要一种preg_match()语法或类似的东西从混合文本中提取JPGPNGGIF URL并将它们放在一个数组中或最后存储第一个url.

也许是一些语法搜索以http开头并以jpg/png/gif结尾的字符串.

我相信它可以做到 preg_match()

注意:文本可以是这样的:blablablabla" http://www.example.com/xxx.jpg "blablablabla

Pab*_*res 12

请注意他们可以欺骗您的服务器插入假火柴的特殊场合.

例如:

http://www.myserver.com/virus.exe?fakeParam=.jpg
Run Code Online (Sandbox Code Playgroud)

要么

http://www.myserver.com/virus.exe#fakeParam=.jpg
Run Code Online (Sandbox Code Playgroud)

我已经快速修改了正则表达式以避免这种情况,但我很确定可能会有更多(例如,在文件的路径中插入%00,并且不能通过正则表达式轻松解析)

$matches = array();
preg_match_all('!http://[^?#]+\.(?:jpe?g|png|gif)!Ui' , $string , $matches);
Run Code Online (Sandbox Code Playgroud)

因此,为了安全起见,请以最严格的方式使用正则表达式,例如,如果您知道服务器,将其写入正则表达式,或者如果您知道路径始终包含字母,连字符,点,斜线和数字,请使用一个表达式如:

$matches = array();
preg_match_all('!http://[a-z0-9\-\.\/]+\.(?:jpe?g|png|gif)!Ui' , $string , $matches);
Run Code Online (Sandbox Code Playgroud)

这应避免将来出现任何有趣的惊喜.


Ocu*_*cuS 5

$matches = array();
preg_match_all('!http://.+\.(?:jpe?g|png|gif)!Ui' , $string , $matches);
Run Code Online (Sandbox Code Playgroud)