我目前正在使用PHP来解析电子邮件。我能够保存附加图像和嵌入图像;然而,嵌入的图像被赋予刺激性的“CID”源,导致图像链接断开。
我想完全解析这些问题,但保留与实际网址相关联的图片。
换句话说,<img src = "http://example.com/images/someimage.jpg">
需要留下来。但是,<img src = "cid:ii_id8bx9qh0_14f205b0a5e7738a">
需要去。
现在,我可以使用strops来查找开始和结束,这样就可以了......除了某些电子邮件客户端还嵌入了诸如宽度,高度和ID之类的东西 - 并且它们将它们放在偶然的顺序中。
所以,我需要一个正则表达式来查找<img
的开头,其中包含src="cid
,一直到图片代码的末尾。
奖励积分如果不区分大小写。
感谢您的帮助!
答案 0 :(得分:1)
为此任务使用正确的tool而不是正则表达式。
$doc = new DOMDocument;
$doc->loadHTML($html); // load the HTML data
$xp = new DOMXPath($doc);
foreach ($xp->query('//img[contains(@src, "cid")]') as $img) {
$img->parentNode->removeChild($img);
}
echo $doc->saveHTML();
答案 1 :(得分:-2)
使用preg_replace
preg_replace('~<img\b[^>]*src\s*=\s*"cid[^"]*"[^>]*>~i', '', $str);
或
preg_replace('~<img\b[^>]*\bsrc\s*=\s*[\'"]cid[^>]*>~i', '', $str);
i
修饰符有助于进行不区分大小写的匹配。