2015-09-09 43 views
0

我要编辑stringvariable。但我无法做到这一点。代码:如何更改PHP中的变量字符串?

$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 = '[email protected]'; // send to mail in contact php 

我改变这样的(IT WORKS):

$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,但我无法使用它。

+0

编辑用PHP PHP脚本通常是一个坏主意 –

+0

好吧,如果这是一个糟糕想法,你可以给什么建议? –

+0

我不认为试图搜索一个非空字符串的空字符串是否会工作 –

回答

1

如果你有一个空字符串,并试图替换它,它不会工作,因为你已经发现。这是因为你试图用某种东西代替什么。因此,它或者什么也不做(它是这样做的,并且是明智的),或者用文件替换文件中没有任何东西的任何实例,例如在文件内容耗尽之前重复添加一些内容。

要做到你以后,你应该尝试更换全行,所以像:

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

谢谢Gabe3886。有效。但我不明白为什么用php编辑php行是个坏主意? –

+1

用PHP编辑php文件是一个坏主意,因为最终可能很容易造成语法错误,每次调用包含或需要该文件的文件时都会导致致命错误。你不知道它发生了,直到你发现并看到错误。正如其他人所建议的,在文本文件中的json字符串或序列化数组可以为你工作(查看json_encode和json_decode。如果你走这条路线,确保任何访问者都不能在浏览器中加载该文件,或者你可能会打开一个巨大的安全漏洞 – gabe3886

+0

,但我否认该文件在.htaccess。它不会帮助,是吗? –