php - 任何 preg_match() 从文本中提取图像 url?

标签 php regex preg-match

我需要一个 preg_match() 语法或类似的东西来提取 JPGPNG来自混合文本的 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/

相关文章:

php - mysql 在 utf8_general_ci 中区分大小写

php - 确定 PHP 在 OOM 终止期间正在做什么?

javascript - 需要找到源路径正则表达式

php preg_match 获取两个字符串之间的数字

php - 重复字符的预匹配

php - 从 PHP 中生成的多个动态 HTML 表制作 MySQL 插入

php - 我需要以数学方式按最小到最大对数字进行排序

c# - 正则表达式到 C# 正则表达式

java - 一次将SQL脚本执行到oracle db中

php - 正则表达式在每个 {space} 上拆分字符串,但不包含在引号中