如何使用正则表达式从文本中删除数据uri?

时间:2014-04-21 23:51:18

标签: php regex

使用正则表达式从文本块中删除数据URI的好方法是什么?我的应用程序必须从电子邮件正文中删除它们,因为Amazon SES(简单电子邮件服务)拒绝任何带有数据URI的电子邮件。出于安全考虑,也应将其删除。

示例数据URI:

data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7

它可以用HTML中的引号括起来:

<img src="data:image/gif;base64,R0lGODlhEAAQA...." />

或者它可能在CSS背景中:

background: url(data:image/gif;base64,R0lGODlhEAAQA....);

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

$regex = '~data:[^;]+;[A-Za-z0-9]+,[^")\'\s]+~';
$body = preg_replace($regex, '', $body);