2017-03-04 69 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

剛編輯我的回答,請檢查其是否正常工作=) –

相關問題
​​