Php 创建将从url提取图像名称的javascript正则表达式

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 不,我需要提取以下

我希望您能帮助我创建一个正则表达式,它将从url中提取图像名称。我已经尝试创建正则表达式好几天了,但是我无法让它工作

案例: 我使用phpThumb创建了一个图像url,如下所示:
\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);
      }