【问题标题】:How do I use the php function file_get_contents properly?如何正确使用 php 函数 file_get_contents?
【发布时间】:2013-05-08 23:37:53
【问题描述】:

简而言之,我将一个页面加载到浏览器中,并将 div id=content 元素的内容捕获到名为“contentOrig”的变量中。加载基于 Javascript 的编辑器,用户可以修改 div id=content 的内容。新的编辑被保存到一个名为“content”的变量中。当用户单击保存图标并且 contentOrigcontent 变量都作为 HTML 传递给 save.php 时,会发出 ajax 请求。

save.php 文件中,函数 file_get_contents 然后在编辑之前打开原始文件(位于同一服务器实例上的不同目录中)并保存将文件内容作为字符串写入 php 变量 ($handle)。然后使用 $contentOrig 作为搜索字符串和 $dataNew$handle 上执行字符串替换函数 str_ireplace() /strong> 作为替换字符串。结果应保存为 $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 文件:

<?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 端发生了什么
  • 即使我注释掉设置 $admin_site_user 的那一行,它仍然不起作用。我知道 $contentSave 的字符串值作为字符串存在于 $dataNew 的字符串值中...我只是不知道为什么找不到它。字符串值具有 HTML 标记这一事实会是一个问题吗?

标签: php javascript jquery file-get-contents str-replace


【解决方案1】:
data: {"data": content, "filePath" : file_path, "contentOrig" : contentOrig},

试试

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

【讨论】:

  • 感谢您的评论。这没有什么区别,数据通过ajax调用成功传递。看来str_ireplace只是没有发生,我去看看被传递的两个变量的数据类型。
【解决方案2】:

你试过 $fileName = str_ireplace("\admin\", $site_path, $pagePath);

我坐在离你两排的地方,你应该刚刚走过去。

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多