2016-10-05 28 views
1

次のコードでは、テキストファイルの行の値を調べる方法を調べようとしています。私は以下のエラーが発生し続ける。私は修正するために多くの組み合わせを試みたが、運がない。私はPHPに新しいので、私は与えられた助けを感謝します。テキストファイルからの呼び出し値とPHPへの追加var

エラーが解決したら、テキストファイル "defaultcolor"の値からカラーコードを取り出し、テキストボックスの値と同じ新しい色に変更することを探しています。

私はテキストファイルから値を報告するためにvar $ currentcolorを取得しようとしています。この値は、ここでエラー

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

はここに私のテキストファイルの行だだ#123456

です。

currentcolor = #123456 
defaultcolor = #379BB9 

ここでは、preg_replaceを実行する前に、私の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に変更しましたが、 "Set Theme Color"ボタンでは、cssファイルの値を置き換えません。私は、cssの値を別のものに変更しようとしています。 – James30263

+0

str replace関数の前に値をエコーし​​て、私は家ではないので、それをテストすることはできません。 – 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 –

+0

str_replaceが動作しましたエラーは表示されませんが、新しいカラーコードをCSSファイルに書き込むことはありません。 $ currentcolorを$ colorcodeに置き換えてはいけませんか?申し訳ありませんが、私はこれに新しいです。あれは正しいですか? – James30263

0

die($currentcolor) 

を行うようにしてくださいます。それは特別な(例えば#など)のシンボル

マット

0

preg_replaceは正規表現関数なので、区切り文字が必要です。 PHPでは、デリミタとして '#'を使用しようとしていると思います。もしあなたが '#123456'を手に入れたら、あなたは '123456'を捕まえたいと思って、右の '#'が見つからないことを警告しようとしているので、Claytonの言うように、 。

関連する問題