2017-01-27 6 views
1

CSSとHTMLの外部変数から電子メールを作成し、インラインスタイルとして結合しています。しかし、それらを組み合わせる前に、私はCSSを変更したい。PHP変数またはDOMDocumentのCSS要素を変更する

以下では、ボディからパディングとマージンを削除したいと考えています。どのように私はこれを行う必要がありますか?preg_matchまたは何か「クリーナー」がありますか?

$css = "body { 
     background: #fff; 
     color: #000; 
     padding: 0; 
     margin: 0; 
     font: 83%/1.4 verdana,sans-serif; 
     -webkit-text-size-adjust: 100%; 
     -ms-text-size-adjust: 100%; 
    } 

    a, a:link, a:visited, a:hover, a:active { 
     background: transparent; 
     text-decoration: none; 
     cursor: pointer; 
    }"; 

また、それはそうかもしれないのDOMDocumentが私を助けることができる私は以下で、このようにCSS(その後、インラインスタイリング)を取得していますことを言及する価値は十分だ - それはきれいようだが、私はどこに知りません開始。

use TijsVerkoyen\CssToInlineStyles\CssToInlineStyles; 

    $dom = new DOMDocument(); 
    @$dom->loadHTML($row['htmlbody']); //from a database 
    $cssobj = $dom->getElementsByTagName('style'); 
    $bodyobj = $dom->getElementsByTagName('body')->item(0); 
    $plainbody = new DOMDocument(); 
    foreach ($bodyobj->childNodes as $child){ 
     $plainbody->appendChild($plainbody->importNode($child, true)); 
    } 
    $body = $plainbody->saveHTML(); 
    $css = $cssobj->item(0)->nodeValue; 
    $cssToInlineStyles = new CssToInlineStyles(); 
    $originalemail = $cssToInlineStyles->convert(
     $body, 
     $css 
    ); 
+0

何についての 'sass'? '$ color =" fff "; $ css = "$ background-color:$ color; body {background:\ $ background-color"; '残ったものだけをコンパイルして保存します。次に、[emogrifier](https://github.com/jjriv/emogrifier)を使ってCSSをインライン化することができます。 – Xorifelse

答えて

0

あなたが削除する正確なテキストがわかっている場合は、PHPからstr_replace()を使用することができます。例:$str_replace('margin:0;','',$css)

または

$str = preg_replace('/margin:(.*?);/', '', $css) 
関連する問題