2013-01-22 47 views
1

爲什麼下面的代碼不工作?String.Replace不能用於php文件?

 string Tmp_actionFilepath = @"Temp\myaction.php"; 


     // change the id and the secret code in the php file 
      File.Copy(@"Temp\settings.php", Tmp_actionFilepath, true); 
      string ActionFileContent = File.ReadAllText(Tmp_actionFilepath); 
      string unique_user_id = textBox5.Text.Trim(); 
      string secret_code = textBox1.Text.Trim(); 
      ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id); 
      ActionFileContent.Replace("SECRET_CODE", secret_code); 
      File.WriteAllText(Tmp_actionFilepath, ActionFileContent); 

這裏是setting.php的內容

 <?php 
     session_start(); 
     $_SESSION["postedData"] = $_POST; 

     ///////////////////////////////////////////////////////// 
     $_SESSION["uid"] = "UNIQUE_USER_ID"; 
     $_SESSION["secret"] = "SECRET_CODE"; 
     ///////////////////////////////////////////////////////// 

     function findThis($get){ 
     $d = ''; 
     for($i = 0; $i < 30; $i++){ 
     if(file_exists($d.$get)){ 
     return $d; 
     }else{ 
     $d.="../"; 
     } 
    } 
    } 


    $rootDir = findThis("root.cmf"); 

    require_once($rootDir."validate_insert.php"); 

什麼是錯上面的代碼?在編譯c#代碼後,我注意到創建了myaction.php文件,但值:UNIQUE_USER_ID和SECRET_CODE不會更改,我還試圖複製/粘貼這些值以確保它們相同。但代碼始終不起作用

回答

5

String.Replace返回一個新的字符串,因爲字符串是不可變的。它不會替換您要調用它的字符串。

,就應該替換:

ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id); 
ActionFileContent.Replace("SECRET_CODE", secret_code); 

有:

ActionFileContent = ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id); 
ActionFileContent = ActionFileContent.Replace("SECRET_CODE", secret_code); 

最重要的是你應該改變你的變量名,使他們按照常規的C#命名約定(即使用actionFileContent代替ActionFileContent )。

2

您必須在字符串上設置replace字符串方法的結果。

string Tmp_actionFilepath = @"Temp\myaction.php"; 

// change the id and the secret code in the php file 
File.Copy(@"Temp\settings.php", Tmp_actionFilepath, true); 

string actionFileContent = File.ReadAllText(Tmp_actionFilepath); 

string unique_user_id = textBox5.Text.Trim(); 
string secret_code = textBox1.Text.Trim(); 

// set the result of the Replace method on the string. 
actionFileContent = ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id) 
            .Replace("SECRET_CODE", secret_code); 

File.WriteAllText(Tmp_actionFilepath, actionFileContent);