簡而言之,我將一個頁面加載到瀏覽器中,並將div id = content元素的內容捕獲到名爲「contentOrig」的變量中。基於Javascript的編輯器加載並且用戶可以修改div id = content的內容。新編輯保存到名爲「內容」的變量中。當用戶單擊保存圖標時發出ajax請求,並且contentOrig和content變量作爲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);
}
也許是因爲'_SERVER'?只要'console.log(data)',你就會看到PHP端 – 2013-05-08 23:40:56
發生了什麼,即使我註釋掉那個設置$ admin_site_user的行仍然不起作用。我知道$ contentSave的字符串值作爲$ dataNew的字符串值中的字符串存在...我只是不知道爲什麼它沒有被發現。字符串值是否包含HTML標記是否是一個問題? – kharrell 2013-05-09 03:56:23