通过另一个疯狂的网站迁移!
我有HTML img src网址,看起来像这样
http://blog.example.com/imagename.jpg
图像格式也可以是jpg,png或gif
我们需要一个正则表达式,它会立即找到每个具有域名的网址,然后是“/imagename.jpg”。
正则表达式非常新,表达式是什么?
答案 0 :(得分:0)
如果您要移动您的网站,并且您希望使用新域替换旧网站的所有引用,建议您使用David Coveney's 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)
匹配以下示例中的网址:
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
会返回图片的完整网址。
我在RegexTester.com上对此进行了测试。您可以在顶部字段中复制模式,并在下面的框中复制所有示例。红色亮点是匹配。
答案 1 :(得分:0)
许多好的建议已经存在,为什么wordpress网站将域名硬编码为链接,但这不是我们现在的问题。如果你需要一个正则表达式,那么试试这个:
(?<=<img).+(?<=src=["'])(.+(?:jpe?g|gif|png))
说明:
(?<=<img).+(?<=src=["']) - be sure we're inside an <img> tag up to src attribute
(.+(?:jpe?g|gif|png)) capture everything up to required extension