2013-05-08 103 views
0

簡而言之,我將一個頁面加載到瀏覽器中,並將div id = content元素的內容捕獲到名爲「contentOrig」的變量中。基於Javascript的編輯器加載並且用戶可以修改div id = content的內容。新編輯保存到名爲「內容」的變量中。當用戶單擊保存圖標時發出ajax請求,並且contentOrigcontent變量作爲HTML傳遞到save.php如何正確使用php函數file_get_contents?

save.php文件中的函數的file_get_contents然後打開編輯之前的原始文件(位於同一服務器實例不同的目錄),並保存該文件的內容作爲一個字符串轉換爲php變量($ handle)。的字符串替換功能,str_ireplace(),然後在執行使用$ contentOrig作爲搜索字符串和$ dataNew作爲替換字符串$處理。結果應保存爲$ contentSave

下面是我的代碼文件,它要求並接收ajax調用。看起來str_replace()不起作用,$ contentSave變量沒有被創建。
任何想法?

$(document).ready(function() { 
var contentOrig = jQuery.data(content, 'contentOrig', $('#content').html()); 
alert(contentOrig); 
var file_path = $(location).attr('pathname'); 

bkLib.onDomLoaded(function() { 
var myNicEditor = 
    new nicEditor({fullpanel : true, onSave : function(content, id, instance) { 
$.ajax({ 
    type : 'POST', 
    url : 'https://mydomain.com/admin/save.php', 
    data: {"data": content, "filePath" : file_path, "contentOrig" : contentOrig}, 
    dataType: "html", 
    success: function(data){ 
     alert('Are you sure you want to save this content?');} 
     }); 
} }).panelInstance('content'); 

}); 

}); 

save.php FILE:

<?php 

    $site_path = "../publicSite/"; 
    $admin_site_user = _SERVER["REMOTE_USER"]; 
    **$dataNew** = $_POST['data']; 
    $pagePath = $_POST['filePath']; 
    **$contentOrig** = $_POST['contentOrig']; 
    $fileName = str_ireplace("/admin/", $site_path, $pagePath); 

    $handle = file_get_contents($fileName); 
    $handle2 = fopen($fileName, 'w+'); 
    **$contentSave = str_ireplace($contentOrig, $dataNew, $handle);** 
    $logHandle = fopen('testsave.html','w'); 

    if($handle2) { 
    if (!fwrite($handle2, $contentSave)); 
    fclose($handle2); 
    } 
+1

也許是因爲'_SERVER'?只要'console.log(data)',你就會看到PHP端 – 2013-05-08 23:40:56

+0

發生了什麼,即使我註釋掉那個設置$ admin_site_user的行仍然不起作用。我知道$ contentSave的字符串值作爲$ dataNew的字符串值中的字符串存在...我只是不知道爲什麼它沒有被發現。字符串值是否包含HTML標記是否是一個問題? – kharrell 2013-05-09 03:56:23

回答

0
data: {"data": content, "filePath" : file_path, "contentOrig" : contentOrig}, 

嘗試

data: {data: content, filePath : file_path, contentOrig : contentOrig}, 
+0

感謝您的評論。這沒有什麼區別,數據通過ajax調用成功傳遞。看起來str_ireplace只是沒有發生,我將看看被傳遞的兩個變量的數據類型。 – kharrell 2013-05-09 19:59:04

0

你嘗試$文件名= str_ireplace( 「\ ADMIN \」,$ SITE_PATH,$ PAGEPATH);

我坐在兩排你的傢伙,你應該走過去。