Php 创建将从url提取图像名称的javascript正则表达式
我希望您能帮助我创建一个正则表达式,它将从url中提取图像名称。我已经尝试创建正则表达式好几天了,但是我无法让它工作 案例: 我使用phpThumb创建了一个图像url,如下所示:Php 创建将从url提取图像名称的javascript正则表达式,php,javascript,regex,Php,Javascript,Regex,我希望您能帮助我创建一个正则表达式,它将从url中提取图像名称。我已经尝试创建正则表达式好几天了,但是我无法让它工作 案例: 我使用phpThumb创建了一个图像url,如下所示: \bla\thumb\phpThumb.php?src=/bla/images/thisistheimage.jpg&;fltr[]=wmt | 40 | B | FFFFFF |佐治亚州。ttf | 35&;hash=b7412f04f09cd6b488435231651d61453 不,我需要提取以下
\bla\thumb\phpThumb.php?src=/bla/images/thisistheimage.jpg&;fltr[]=wmt | 40 | B | FFFFFF |佐治亚州。ttf | 35&;hash=b7412f04f09cd6b488435231651d61453
不,我需要提取以下内容:thisistheimage.jpg
一些事实:
- 图像名称前始终有一个“/”李>
- 图像名称后面总是跟一个amp(&)李>
- 图像扩展也可以是:jpeg、JPG、png、png、gif李>
(?:png | jpg | gif)
的图像扩展
你能帮我在这种情况下使用什么正则表达式吗
我可以在javascript或PHP中使用正则表达式,您建议在哪里使用它?(我使用javascript提交表单,表单操作在PHP中完成)
我认为这应该行得通。i标记不区分大小写
- 匹配斜杠/
- 字母数字和-一个或多个[A-Z0-9-]{1,}
- 句号李>
- 扩展名(?:png | jpg | gif | jpeg)
- 既然您已经标记了,为什么不浏览一下
document.images
并获得您想要的图像呢
像这样:
// add a proxy to all images in the page
var proxy = 'https://proxytea.appspot.com/'
for (var x=0; x<document.images.length; x++) {
imagem = document.images[x];
imagem.src = imagem.src.replace(location.protocol + '//', proxy);
}
//为页面中的所有图像添加代理
var代理服务器https://proxytea.appspot.com/'
for(var x=0;xRe):“我能够在javascript或PHP中使用正则表达式,您推荐在哪里使用它?”:请记住,您不能信任表单中提交的任何内容,因为它来自您无法控制的代码。您可能编写了与PHP页面交互的JavaScript代码,但您不能保证提交表单时使用的是这些代码。因此,如果没有相反的原因,您几乎应该总是更愿意这样做在服务器端使用PHP。ruakh的进一步评论:JavaScript应该用于方便用户,而不是用于任何形式的数据安全或卫生。在存储用户提交的或来自用户的任何内容之前,始终检查服务器端。这是一个匹配但忽略前导斜杠的改进:/(?!\/)([A-Z0-9-]{1,}\(?:png | jpg | gif | jpeg))/我的工作很有魅力,非常感谢!你的解释帮助我理解现在一切是如何工作的,以及为什么。@Intelekshual:也感谢你与我们一起思考并发布改进!
// add a proxy to all images in the page
var proxy = 'https://proxytea.appspot.com/'
for (var x=0; x<document.images.length; x++) {
imagem = document.images[x];
imagem.src = imagem.src.replace(location.protocol + '//', proxy);
}