【问题标题】:Call value from text file and add to php var从文本文件中调用值并添加到 php var
【发布时间】:2017-02-13 07:53:29
【问题描述】:

在下面的代码中,我试图找出如何确定文本文件中一行的值。我不断收到以下错误。我尝试了许多组合来修复但没有运气。我是 php 新手,所以我很感激任何帮助。

一旦我得到解决的错误,我正在寻找它从文本文件“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>';
?>

【问题讨论】:

  • 乍一看...我认为您不需要preg_replace。我敢打赌str_replace 就足够了,并且可以解决您的正则表达式分隔符错误。
  • 我将其更改为 str_replace 没有错误,但现在当我单击“设置主题颜色”按钮时,它不会替换 css 文件中的值。我正在寻找它将css中的一个值更改为另一个值。
  • 尝试在 str 替换函数之前回显值以对其进行调试。我不在家,所以无法测试。

标签: php html text var


【解决方案1】:

使用str_replace (http://php.net/str_replace) 代替preg_replace (http://php.net/preg_replace)。

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

preg_replace 将尝试使用正则表达式来执行替换,但您似乎只是在进行简单的字符串替换。

【讨论】:

  • str_replace 正常工作,但现在它不会将新颜色代码写入 css 文件。它不应该用 $colorcode 替换 $currentcolor 吗?对不起,我是新手。对吗?
【解决方案2】:

尝试做一个

die($currentcolor)

在运行 preg_replace 之前。需要用特殊符号包裹(如#

马特

【讨论】:

    【解决方案3】:

    preg_replace 是一个正则表达式函数,因此需要分隔符。似乎 PHP 认为您正在尝试使用 '#' 作为分隔符。因此,如果您得到“#123456”,它会认为您想要捕获“123456”并尝试警告您缺少右侧的“#”。所以就像 Clayton 所说,您可能需要考虑使用字符串替换.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 2015-03-04
      • 2019-05-12
      • 1970-01-01
      • 2019-04-25
      • 2018-01-09
      • 1970-01-01
      相关资源
      最近更新 更多