2017-03-04 117 views
1

我想发送基于BootStrap的电子邮件,但由于电子邮件不支持外部CSS,所以我需要嵌入,而不是只有所需的CSS为<style>....css....code....</style>,但我想知道是否有反正我可以只提取表CSS代码从BootStrap CSS文件,以便我不必从CSS文件手动收集CSS代码部分?我可以从样式表中只提取使用的CSS吗?

像例如只收集一个特定的HTML元素的所有CSS,它的子元素,例如我想只复制表CSS代码???

我检索它通过PHP为:

<?php 

$bootstrap = file_get_contents("bootstrap.min.css"); 

$explode = explode("}", $bootstrap); 

for ($i=0; $i < count($explode); $i++) { 
    if (strpos($explode[$i],".table") !== false) { 
     echo $explode[$i]."}</br></br>"; 
    } 
} 


?> 
+0

这可能是不使用引导为HTML格式的电子邮件的基础是一个好主意。它的设计目的不是为了处理一些常见的电子邮件客户端的HTML呈现引擎中的错误。 – Quentin

+0

'window.getComputedStyle(ele)'表示一个元素,但不是它的子元素。 – zer00ne

+0

不幸的是,你处于困难的境地;你提出的问题(“我可以只从样式表中提取用过的CSS”)是好的,并且是主题上的(尽管它仍然会更适合你发布你自己的尝试,并解释他们为什么/如何失败)。不幸的是,由于不推荐Bootstrap,因为它是外部托管的,而不是针对样式化电子邮件的(很多很多*)问题设计的,所以它可能很难得到答案。如果您将问题修改为“您推荐什么图书馆?”那么这个问题就会立即脱离主题,并且将被关闭。 –

回答

0

如果您使用不精缩自举,PHP的解决方案将是:

$regex = "/.*(table|tr|td)([^\}]+)}/"; 
$bootstrap = //here goes bootstrap string 
preg_match($regex,$bootstrap, $matches); 

然后,$比赛将是你想要的所有样式的数组。例如,您可以在(table|tr|td)部分添加任何你想要的内容,将其更改为(table|tr|td|th|tbody)

详细文档见:https://secure.php.net/manual/function.preg-match.php

+1

虽然这可以通过正则表达式来完成,但是您需要显示*这可以通过正则表达式实现以将此注释转变为对OP和未来访问者有用的答案。 –

+0

你可以写正则表达式在PHP的'

'和它的所有子元素为''等等, –

+0

刚编辑我的回答,请检查其是否正常工作=) –

相关问题
​​