2016-10-05 98 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'并试图警告你右侧的'#'丢失了。所以就像克莱顿说的,你可能会考虑使用一个字符串替换

相关问题