制作一个匹配包含网址和图片扩展名的字符串的正则表达式

时间:2014-09-24 11:35:12

标签: php regex

我在正则表达式上表现不佳,说过,我正在尝试制作一个正则表达式,允许所有类型的网址类型:

$regex = '~mydomain.ide.com/polopoly_fs/([a-z0-9\\.\\_\\-]+(\\.gif|\\.png|\\.jpe?g))~i'; 

//包括所有格式

目的是获取具有如下功能的网页图片:

/**
 * Get the Images
 * @param unknown $html
 */
function getImages($html) {
  echo "Hello from getImages <br/>";

  $matches = array();

  $regex = '~http://mySite.ide.com/([a-z0-9\\.\\_\\-]+(\\.gif|\\.png|\\.jpe?g))~i'; //include all formats

  preg_match_all($regex2, $html, $matches);
  foreach ($matches[1] as $img) {
    saveImg($img);
  }
}

但是我需要一个正则表达式,它使用这个结构的URL:

http://mydomain.ide.com/polopoly_fs/1.573651!imageManager/3188890795.jpg

有人可以帮忙吗?

谢谢

2 个答案:

答案 0 :(得分:1)

这样的事情应该足够了。

/(.*.com\/[a-z_-]+\/[0-9\.a-z!]+\/[a-z0-9_-]+\.(gif|jpg|jpeg|png))/i

这是PHP代码

<?php

$s = "http://mydomain.ide.com/polopoly_fs/1.573651!imageManager/3188890795.jpg";

preg_match("/(.*.com\/[a-z_-]+\/[0-9\.a-z!]+\/[a-z0-9_-]+\.(gif|jpg|jpeg|png))/i", $s, $arrMatches);

echo print_r($arrMatches[0], true);

Live Preview

  • 不区分大小写的匹配
  • 仅匹配.com tld,但可以进行调整以匹配更多

答案 1 :(得分:1)

现在好了,我可以多说一点。

如果我理解你想要的是搜索一个完整的html图片网页完全有资格保存它们,不关心名称或它们的位置。

function getImages($html) {
  echo "Hello from getImages <br/>";

  $matches = array();

  $regex = '~http://.*/[a-z0-9._-]+(?:\.gif|\.png|\.jpe?g)~i'; //include all formats

  preg_match_all($regex, $html, $matches);
  foreach ($matches as $img) {
    saveImg($img[0]);
  }
}

你不必在这里捕获任何东西,匹配将被启用,唯一需要被转义的char是。匹配.gif .png等中的littelal点。

如果我误解了,请随意评论,我会适应