RTLの方向テンプレートで使用する必要があるCSSファイルがあります。 PHPと正規表現を使用して、これらのCSSファイルの左から右に、すべて右から左に変換する必要があります。左に右と左を代用する正規表現が必要です
たとえば、「margin-left」と表示されている場合は「margin-right」、その逆の場合は、
RTLの方向テンプレートで使用する必要があるCSSファイルがあります。 PHPと正規表現を使用して、これらのCSSファイルの左から右に、すべて右から左に変換する必要があります。左に右と左を代用する正規表現が必要です
たとえば、「margin-left」と表示されている場合は「margin-right」、その逆の場合は、
それを行うための簡単な方法は、に次のようになります。
$rtl = str_replace('left', '{left}', $css);
$rtl = str_replace('right', '{right}', $rtl);
$rtl = str_replace(array('{left}', '{right}'), array('right', 'left'), $rtl);
大きな問題CSSのこれらの種類があります:
margin: 0 5px 0 10px;
もっと大きな問題:
box-shadow: inset 3px 4px 32px black, 2px 3px 2px white
あなたべきどのような種類のCSSが発生する可能性があるかを明確にします。私は単にleft
ともposition: absolute
位置決め値をサポートする権利と同じに-left
を置き換え :私はあなたが本格的なCSSパーサに
EDITを書きたいとは思いません。
それは動作していません、それは右から左に変換しますが、左から右に変換しません。このコードをチェックしてください: <?php $ file = '.logo { float:right; margin-left:30px; } '; $ source = array( 'left'、 'right'); $ target = array( 'right'、 'left'); $ rtl = str_replace($ source、$ target、$ file); echo $ rtl; ?> – alhoseany
私は、左から右に1つずつ切り替えた後に(左、右) - >(右、左)のような配列として値を与え、2番目の置換を続けると、しかし、彼はそうしたので、すべての権利は左に残った。ありがとうございます。 – SinistraD
今働く。 – alhoseany
これは、PHPでそれを行う理由トリック
preg_replace_callback('/(.+)\-(left|right)/i', function($match) { return $match[1].'-'.($match[2] == 'left' ? 'right' : 'left'); }, $str);
正規表現で作成した場合、a:とa/nの順方向ルックアップを行う必要があります。この方法で、background:url(picture-left.png)のような値を置き換えることはできません。私は '左:'と '左:'と '左\ t:'はすべて有効なCSSだから、私の答えではしなかった – SinistraD
あなたは完全に正しいです。 –
へ必要がありますか?テキストエディタを使用して置き換えても簡単です – Alex
RTLユーザーの場合にのみ置き換える必要があるためですか? – 472084
変更するCSSファイルがたくさんあるので、後で使用するスクリプトを作成したいからです。プラスあなたは本当に10 cssファイルのすべての左右を通過する時間がありますか? – alhoseany