2010-11-23 54 views
0

鉴于该请求对象类的物品的串...正则表达式转换Get请求对象CSS对象

mytheme_color|body = '000000' 
mytheme_color|h1 = 'ffffff' 
mytheme_color.footer|a = 'cccccc' 
mytheme_color.menu.top|a = 'ff0000' 
mytheme_color.content|ul|li#test = '777777' 

什么将正则表达式和PHP模样采取的每个项目,并将其写入到输出的字符串,它可以保存为custom.css命名的文件,使文件的最终内容是...

body {color:#000000;} 
h1 {color:#ffffff;} 
.footer a {color:#cccccc;} 
.menu.top a {color:#ff0000;} 
.content ul li#test {color:#777777;} 

注:管在请求应该只是被转化为空的空间输出。

回答

0

假设输入数据是,如上所述,一个单独的字符串与换行分隔的值,然后下面的preg_match_all和循环将工作创建一个字符串$ strCssFile,可以写出一个CSS文件:

<?php 

// Test dummy data 
$strTest = "mytheme_color|body = '000000' 
mytheme_color|h1 = 'ffffff' 
mytheme_color.footer|a = 'cccccc' 
mytheme_color.menu.top|a = 'ff0000' 
mytheme_color.content|ul|li#test = '777777'"; 

$arrOutput = array(); 
preg_match_all("/mytheme_color([a-z0-9#\.|]+) = '([a-f0-9]+)'/i", $strTest, $arrOutput); 
//preg_match_all("/mytheme_color([a-z0-9#\*|]+) = '([a-f0-9]+)'/i", $strTest, $arrOutput); 

$strCssLine = ''; 
$strCssFile = ''; 

foreach ($arrOutput[1] as $intKey => $strValue) { 
    $strCssLine = trim(str_replace('|', ' ', $strValue)); 
    //$strCssLine = trim(str_replace(array('|', '*'), array(' ', '.'), $strValue)); 
    $strCssLine .= ' { color: '; 
    $strCssLine .= $arrOutput[2][$intKey]; 
    $strCssLine .= "; }\n"; 
    $strCssFile .= $strCssLine; 
} 

echo $strCssFile; 

?> 
+0

这看起来不错。但是,在回应我的选项值的过程中,似乎使用点“。”。在选项名称foobars我用来发送选项到我的保存功能的数组。如果在期间“。”中标有星号“*”,代码将会是什么样子? – 2010-11-23 22:50:00