2013-05-08 92 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);

我坐在两排你的家伙,你应该走过去。