2016-10-16 32 views
2

我有一些PHP取代目录中的css文件中的颜色值。它工作正常,只是它只搜索主目录中的css文件。我一直在寻找,但似乎找不到一个简单的方法来做这个递归。有任何想法吗?我正在使用$ arr = glob(“themes/Evolution/* .css”);我正在使用$ arr =使用PHP来搜索导航文件递归和更改值

带有css文件的示例文件夹结构是。

Main Dir > Style.css 
Main Dir > Folder 1 > mycss.css 
Main Dir > Folder 2 > mycss.css 
Main Dir > Folder 3 > mycss.css 

//Read default color from INI 
 
$lines_array = file("modules/evolution/evolution.ini"); 
 
$search_string = "currentcolor"; 
 

 
foreach($lines_array as $line) { 
 
    if(strpos($line, $search_string) !== false) { 
 
     list(, $new_str) = explode("=", $line); 
 
      $new_str = trim($new_str); //This line removes the spaces before and after. 
 
    } 
 
} 
 

 
$inicurrentcolor = $new_str; 
 

 
//code to change css color 
 
if(isset($_REQUEST['resetcolor'])){ 
 
\t $arr=glob("themes/Evolution/*.css"); //your css file's path 
 
\t \t $textboxdefaultcolorcode=$_POST['defaultcolor']; 
 
\t \t 
 
foreach($arr as $key=>$val){ 
 
\t $str=file_get_contents($val); 
 
\t \t \t $str=str_replace($inicurrentcolor, $textboxdefaultcolorcode, $str); 
 
\t \t file_put_contents($val, $str); 
 
\t } 
 
} 
 

 
<div class="colorbox"> 
 
<br> 
 
<label id="steps">Reset Evolution theme color back to the default color.</label> 
 
<br> 
 
<br> 
 
<Form name="default1" method="POST" action="home.php?m=evolution"> 
 
<label for="color1">Default Theme Color: </label><input style="background-color:#379BB9; color:#ffffff" type="text" id="defaultcolor" name="defaultcolor" value="#379BB9" readonly> 
 
<br> 
 
<br> 
 
<input type="submit" name="resetcolor" value="Reset Theme Color"> 
 
</form> 
 
<br> 
 
</div>

回答

1

我想通了一些帮助的答案。下面的代码将允许您使用上面的代码递归搜索。希望这可以帮助。

$themedir = 'themes/Evolution'; 
 
$allFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($themedir)); 
 
$cssFiles = new RegexIterator($allFiles, '/\.css$/i'); 
 

 
if(isset($_REQUEST['resetcolor'])){ 
 
$textboxdefaultcolorcode=$_POST['defaultcolor']; //added line 
 

 
foreach($cssFiles as $cssFile=>$val){ 
 
\t $str=file_get_contents($val); 
 
\t \t \t $str=str_replace($inicurrentcolor, $textboxdefaultcolorcode, $str); 
 
\t \t file_put_contents($val, $str); 
 
\t } 
 
}