经历另一个疯狂的网站迁移!
我有看起来像这样的 HTML img src url
http://blog.example.com/imagename.jpg
图像格式也可以是 jpg、png 或 gif
我们需要一个正则表达式来查找每个具有域的 url,然后是“/imagename.jpg”。
正则表达式非常新,表达式是什么?
如果您正在移动您的网站,并且您希望用新域替换对旧站点的所有引用,我建议您使用David Coveney 的 Serialized Search & Replace DB v2.1.0。您将希望在数据库的新副本上运行它,并且随时准备好备份。在目标服务器上导入数据库,然后运行该工具 - 您甚至不必上传服务器文件。
当我从开发服务器到实时域执行此操作时,我通常会进行两次搜索和替换:
一个用于 URL,非常基本:
Search: mywebsite.devserver.com
Replace: my-new-website.com
一个用于文件路径:
Search: /vhosts/devserver.com/mywebsite
Replace: /vhosts/my-new-website.com/httpdocs
(Note: This is assuming the majority of the file path is the same for both servers. Your search & replace paths may need to be more accurate)
需要序列化查找替换的原因是,有些数据是以 PHP 序列化格式存储的,如果你用文本编辑器或直接在 MySQL 中更改值,之后可能无法反序列化。
使用以下正则表达式模式选择由 blog.example.com 托管的图像:
((http|https)://blog\.example.com/[^ \r\n]+\.(jpg|jpeg|png|gif))
基本上搜索这个:http(s)://blog.example.com/*.(jpg/png/etc)
匹配以下示例中的 URL:
http://example.com/imagename.jpg
http://blog.example.com/imagename.jpg
http://blog.example.com/favicon.png
http://blog.example.com/uploads/2013/05/kitten.gif
https://blog.example.com/ssl-secure.png
This is my favorite gif https://blog.example.com/some-hilarious-image.gif hahaha
不符合以下任何一项:
blog.example.com/google.png
https://blog.google.com/google.png
our website is http://blog.example.com and has an image named /imagename.png
http://blog.example.com/
为什么它不匹配那些(按行):
Does not include http(s)://
Hosted by google
Paragraph text, where the URL is split into two parts
Not an image
$1
返回图像的完整 URL。
我在RegexTester.com上对此进行了测试。您可以复制顶部字段中的模式,以及下面框中的所有示例。红色亮点是比赛。
Many good suggestions already, and why would a wordpress site hardcode domain name to links, but thats not our problem right now. If you need a regex then try this:
(?<=<img).+(?<=src=["'])(.+(?:jpe?g|gif|png))
EXPLAINED:
(?<=<img).+(?<=src=["']) - be sure we're inside an <img> tag up to src attribute
(.+(?:jpe?g|gif|png)) capture everything up to required extension