0

我正在尝试进行正则表达式匹配并替换 hotfile.com 链接到我的数据库(Wordpress)中的 mp3 文件。

我曾经使用 hotfile 在我的网站上流式传输 mp3 文件,现在我切换到 CDN,有人可以帮我解决这个问题:

替换:http//hotfile.com/dl/157490069/c8732d4/mp3_file_name.mp3 为:http//p.music.cdndomain.com/vod/music.folder/2010/mp3_file_name.mp3

我一直在尝试这样的简单搜索和替换:http//hotfile.com/dl/%/%/,但它不起作用。

如果 hotfile.com 没有所有文件的不同文件夹,则执行搜索和替换会更容易,下面是问题的 2 个示例:

http//hotfile.com/dl/155490069/c7932d4/ http//hotfile.com/dl/165490070/c8745e7/

我有超过 500 个文件要替换。

谢谢

4

3 回答 3

0

由于您必须将 mysql 用于您的 wordpress 数据库,因此您可以按照您的要求通过正则表达式进行此替换:

正则表达式模式: #http://(www.)?hotfile.com/\w+/\w+/\w+/#

更换模式:http//p.music.cdndomain.com/vod/music.folder/2010/

另一种更简单的解决方案是使用 mysql 的简单字符串函数提取 mp3 文件名,例如

  1. 使用SUBSTRINGSUBSTRING_INDEX提取您的 mp3 文件的文件名,即在您的 hotfiles url 中最后一次出现“/”之后查找字符串。

  2. 使用CONCAT将检索到的文件名附加到新的 url 前缀并在数据库中更新它。

这是一个示例,您可以为您的数据库适当地更改它:

mysql> select * from test_songs;
+---------------------------------------------------------------+
| song_url                                                      |
+---------------------------------------------------------------+
| http://hotfile.com/dl/157490069/c8732d4/mp3_file_name.mp3     |
| http://www.hotfile.com/dl/123412312/dd732d4/mp3_song_name.mp3 |
+---------------------------------------------------------------+

取子串:

mysql> select SUBSTRING_INDEX(song_url,"/",-1) from test_songs;
+----------------------------------+
| SUBSTRING_INDEX(song_url,"/",-1) |
+----------------------------------+
| mp3_file_name.mp3                |
| mp3_song_name.mp3                |
+----------------------------------+
2 rows in set (0.03 sec)

创建最终更新查询:

mysql> Update test_songs set song_url =
CONCAT("http//p.music.cdndomain.com/vod/music.folder/2010/",
        SUBSTRING_INDEX(song_url,"/",-1)) ;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

检查结果:

mysql> select * from test_songs;
+---------------------------------------------------------------------+
| song_url                                                            |
+---------------------------------------------------------------------+
| http//p.music.cdndomain.com/vod/music.folder/2010/mp3_file_name.mp3 |
| http//p.music.cdndomain.com/vod/music.folder/2010/mp3_song_name.mp3 |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

完毕 !

于 2012-08-30T08:35:17.020 回答
0

http://regex101.com/r/lK9wH4这样简单的东西应该可以工作: /^.+\/(.+)$/并替换为<your_new_url>\1.

祝你好运。

于 2012-08-30T08:01:24.320 回答
0

您可以使用 notepad++ 搜索和替换所有文件

对于这个特定的样本:

在正则表达式模式下搜索和替换:

搜索“http//hotfile.com/(. )/(.. mp3)”

替换“http//p.music.cdndomain.com/vod/music.folder/2010/\2”

删除引号,但在末尾保留空格

更新:notepad++ 的屏幕截图

在此处输入图像描述

于 2012-08-30T08:21:55.067 回答