替换XML文件中的所有图像

时间:2014-10-22 18:54:59

标签: xml regex wordpress replace

我已导入所有wordpress内容,现在我想用占位符图像替换所有图像。我认为最明显的方法是搜索和替换所有图像。我尝试手动完成,但文件很大,让我重新思考这个。

这是wordpress导出的XML文件的示例:https://wpcom-themes.svn.automattic.com/demo/theme-unit-test-data.xml

我想用placehold.it url(http://placehold.it/)替换所有图片网址

我正在使用sublime文本编辑器,是否有任何正则表达式搜索XML文件上的所有图像URL?我对正则表达式真的不太好..

提前致谢!

2 个答案:

答案 0 :(得分:2)

使用一些占位符文本替换所有图像src属性的简单正则表达式将是:

搜索:

<img (.*?)src=".*?"

替换为:

<img $1src="http://example.com"

如果您想使用占位符网址,可以执行以下操作:

<img (.*?)src=".*?"(.*?)width="(\d+)" height="(\d+)"

替换为:

<img $1src="http://placehold.it/$3x$4"$2width="$3" height="$4"

说明:

  • .*?表示0个或更多字符
  • \d+表示1个或多个数字
  • ()捕获括号内容,并将其保存到$1$2$3等。

  • <img (.*?)src捕获<imgsrc之间的所有字符,并将其保存在$1中 - 所以如果有类属性,ID,就像那 - 它将保存为$1.*?也可以不匹配,因此$1也可以为空。

  • width="(\d+)"捕获提供图片宽度的数字,并将其保存到$3(因为它是该正则表达式中的第三组括号)。

答案 1 :(得分:1)

正则表达式:

(\<img\s+.*?src\s*=\s*)(?|"(.*?)"|\'(.*?)\')(.*?\/?\>)

替换:

$1"http://placehold.it/"$3

如果您的编辑器支持正则表达式搜索和替换,那么请使用上面的内容,否则使用PHP:

$string = preg_replace( '/(\<img\s+.*?src\s*=\s*)(?|"(.*?)"|\'(.*?)\')(.*?\/?\>)/is', '$1"http://placehold.it/"$3', $string );