使用REGEX更改URL并附加文件扩展名

时间:2014-07-11 12:22:45

标签: php regex

我一直在阅读RegEx文档,但我必须说我仍然有点偏离我的元素,所以我为没有发布我尝试过的内容而道歉,因为这一切都是完全错误的。

这是问题所在:

我使用以下来源获得了图片:

src="http://samplesite/.a/6a015433877b2b970c01a3fd22309b970b-800wi"

我需要做到这一点:

src="http://newsite.com/wp-content/uploads/2014/07/6a015433877b2b970c01a3fd22309b970b-800wi.jpg"

基本上从URL中删除/.a/并将.jpg附加到图像文件名的末尾。如果它有助于解决方案我使用此插件:http://urbangiraffe.com/plugins/search-regex/

全部谢谢。

2 个答案:

答案 0 :(得分:2)

这可能会对你有帮助。

(?<=src="http:\/\/)samplesite\/\.a\/([^"]*)

Online demo

示例代码:

$re = "/(?<=src=\"http:\/\/)samplesite\/\.a\/([^\"]*)/";
$str = "src=\"http://samplesite/.a/6a015433877b2b970c01a3fd22309b970b-800wi\"";
$subst = 'newsite.com/wp-content/uploads/2014/07/$1.jpg';

$result = preg_replace($re, $subst, $str);

输出:

src="http://newsite.com/wp-content/uploads/2014/07/6a015433877b2b970c01a3fd22309b970b-800wi.jpg"

模式描述:

  (?<=                     look behind to see if there is:
    src="http:               'src="http:'
    \/                       '/'
    \/                       '/'
  )                        end of look-behind

  samplesite               'samplesite'
  \/                       '/'
  \.                       '.'
  a                        'a'
  \/                       '/'

  (                        group and capture to \1:
    [^"]*                    any character except: '"' (0 or more
                             times (matching the most amount
                             possible))
  )                        end of \1

您可以在不使用 Positive Lookbehind 的情况下尝试

(src="http:\/\/)samplesite\/\.a\/([^"]*)

Online demo

示例代码:

$re = "/(src=\"http:\/\/)samplesite\/\.a\/([^\"]*)/";
$str = "src=\"http://samplesite/.a/6a015433877b2b970c01a3fd22309b970b-800wi\"";
$subst = '$1newsite.com/wp-content/uploads/2014/07/$2.jpg';

$result = preg_replace($re, $subst, $str);

答案 1 :(得分:0)

您可以使用:

$replaced = preg_replace('~src="http://samplesite/\.a/([^"]+)"~',
                 'src="http://newsite.com/wp-content/uploads/2014/07/\1.jpg"',
                  $yourstring);

<强>解释

  • ([^"]+)匹配任何非"到第1组
  • 的字符
  • \1在替换中插入第1组。