【问题标题】:How to change string of variable in php?如何更改php中的变量字符串?
【发布时间】:2015-09-09 20:06:34
【问题描述】:

我想编辑stringvariable。但我做不到好。代码:

$mysite = 'mysite'; //name of site
$myurl = 'http:/mysite.com'; //url of website
$metaauthor = ''; // meta name author;
$metatitle = 'Online CV Builder'; // meta name title
$metacopy = 'Javid Karimov'; // meta name copyright
$metakeywords = 'CV, PDF, ONLINE, RESUME'; // meta name keywords
$allowcv = '2'; // how many cv's user can create
$keyword = 'cv, pdf, resume, create cv online'; // keyword for creating security key
$mailto = 'mail@gmail.com'; // send to mail in contact php

我这样改变(它工作):

$str = file_get_contents('../sys/sets.php');

//replace something in the file string
$str = str_replace($mysite, $sitenamexx, $str);
$str = str_replace($myurl, $siteurlxx, $str);
$str = str_replace($metaauthor, $metaavtorxx, $str);
$str = str_replace($metacopy, $metacopyxx, $str);
$str = str_replace($metatitle, $metatitlexx, $str);   
$str = str_replace($metakeywords, $metakeywxx, $str);
$str = str_replace($allowcv, $allowcvxx, $str);
$str = str_replace($keyword, $keywxx, $str);
$str = str_replace($mailto, $mailtoxx, $str);

//write string
$wok = file_put_contents('../sys/sets.php', $str);

if($wok) {
     echo 'Changed<br/>';
 }
 else {
     echo 'Error<br/>';
 }  

问题:如果string 为空(例如:$mysite = '';),那么它不会改变。我该如何解决?可能有另一种方法吗?我试过fopen()fgets()的方式,这样我必须使用array,但是我无法使用它。

【问题讨论】:

  • 用 php 编辑 php 脚本通常是个坏主意
  • 好吧,如果这是个坏主意,你能给出什么建议?
  • 我认为尝试在非空字符串中搜索空字符串是行不通的
  • 你的意思是我不能用任何方式改变它?
  • 我的大脑>.$thing 更新为$thingxx?或者'$thing''$thingxx'

标签: php string file variables


【解决方案1】:

如果您有一个空字符串并尝试替换它,那么它不会起作用,正如您所发现的那样。这是因为您试图用某些东西代替任何东西。因此,它要么什么都不做(它做了,而且是明智的),要么用某些东西替换文件中没有任何东西的每个实例,即重复地将某些东西添加到文件中,直到内存用完。

要做你想做的事,你应该尝试替换整行,比如:

$str = str_replace('$mysite = \'' . $mysite . '\';', '$mysite = \'' . $sitenamexx . '\';', $str);

【讨论】:

  • 谢谢 Gabe3886。有效。但我不明白为什么用 php 编辑 php 行是个坏主意?
  • 使用 PHP 编辑 php 文件是个坏主意,因为您最终很容易创建一个语法错误,这会在每次调用包含或需要该文件的文件时导致致命错误。在您发现并看到错误之前,您不会知道它发生了。正如其他人所建议的那样,文本文件中的 json 字符串或序列化数组可能对您有用(查看 json_encode 和 json_decode。如果您走这条路,请确保任何访问者都无法在 Web 浏览器中加载该文件,或者您可能会打开一个巨大的安全漏洞
  • 但我否认 .htaccess 中的文件。这不会有帮助,是吗?
  • 拒绝 .htaccess 中的文件会有所帮助,是的。我必须说明的是,人们会阅读这些 cmets,将他们的配置放在一个文本文件(可能是 config.txt)中,他们将使用 root 作为他们的数据库用户,并将其设置为从任何地方连接。他们的数据库将被盗,他们会想知道为什么
  • 如果我理解正确,您的意思是这是个坏主意。最好使用 json 或序列化数组。 ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2013-03-30
  • 2016-07-25
相关资源
最近更新 更多