2016-10-05 50 views
1

在下面的代碼中,我試圖找出如何確定文本文件中一行的值。我不斷收到下面的錯誤。我嘗試了很多組合來修復,但沒有運氣。我是新來的PHP,所以我感謝任何幫助。從文本文件中調用值並添加到php var

一旦我解決了錯誤,我正在尋找它從文本文件「defaultcolor」值中取出顏色代碼,並將其更改爲等於文本框值的新顏色。

我試圖讓var $ currentcolor報告文本文件中的值。這值爲#123456

這裏的錯誤

Warning: preg_replace(): No ending delimiter '#' found 

下面是我的文本文件中的行。

currentcolor = #123456 
defaultcolor = #379BB9 

這裏是我的PHP

<?php 
 
if(isset($_REQUEST['setcolor'])){ 
 
$arr = glob("css\*.css"); 
 
$colorcode = $_POST['defaultcolor'];  
 
foreach($arr as $key=>$val){ 
 
$str = file_get_contents($val); 
 
$lines_array = file("example.txt"); 
 
$search_string = "currentcolor"; 
 

 
foreach($lines_array as $line) { 
 
    if(strpos($line, $search_string) !== false) { 
 
     list(, $new_str) = explode("=", $line); 
 
    } 
 
} 
 
$currentcolor = $new_str; 
 
$str = preg_replace($currentcolor, $colorcode, $str); 
 
file_put_contents($val, $str); 
 
} 
 
} 
 
echo '<label id="steps">Here you can set the theme color.</label>'; 
 
echo '<br>'; 
 
echo '<Form name="default1" method="POST" action="example.php">'; 
 
echo '<label for="defaultcolor">Theme Color: </label><input style="color:#000000" type="text" id="defaultcolor" name="defaultcolor" value="#379BB9">'; 
 
echo '<br>'; 
 
echo '<input type="submit" name="setcolor" value="Set Theme Color">'; 
 
echo '</form>'; 
 
echo '<br>'; 
 
?>

+3

乍一看......我不認爲你需要'preg_replace',我敢打賭'str_replace'已經足夠了,並且可以解決你的正則表達式分隔符錯誤 – jszobody

+0

我把它改成了str_replace,沒有任何錯誤,但是現在當我點擊在「設置主題顏色」按鈕上,它不會替換css文件中的值,我正在查找它以將css中的一個值更改爲另一個值。 – James30263

+0

嘗試在str替換函數之前回顯值以對其進行調試。我不在家所以不能測試它。 – Clay

回答

0

使用str_replacehttp://php.net/str_replace),而不是preg_replacehttp://php.net/preg_replace)來包裝。

$str = str_replace($currentcolor, $colorcode, $str); 

preg_replace將嘗試使用正則表達式來替代,但它似乎你只是做一個簡單的字符串替換。

+1

相同http://stackoverflow.com/questions/39801904/search-css-in-folder-using-php-and-change-css-values/39802447 #39802447與str_replace合作的 –

+0

沒有錯誤,但現在它不會寫入新的顏色代碼到CSS文件。不應該用$ colorcode替換$ currentcolor嗎?對不起,我是新手。那是對的嗎? – James30263

0

嘗試做一個

die($currentcolor) 

運行preg_replace之前。它需要用特殊符號(如#

馬特

0

preg_replace是一個正則表達式函數,因此需要分隔符。似乎PHP認爲你正在嘗試使用'#'作爲分隔符。所以,如果你有'#123456',它認爲你想捕捉'123456'並試圖警告你右側的'#'丟失了。所以就像克萊頓說的,你可能會考慮使用一個字符串替換

相關問題