Rya*_*yan 4 php regex preg-match
我需要一种preg_match()语法或类似的东西从混合文本中提取JPG或PNG或GIF 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)
这应避免将来出现任何有趣的惊喜.
$matches = array();
preg_match_all('!http://.+\.(?:jpe?g|png|gif)!Ui' , $string , $matches);
Run Code Online (Sandbox Code Playgroud)