В двух словах я загружаю страницу в браузер и захватываю содержимое элемента div id = content в переменной с именем «contentOrig». Редактор Javascript загружается, и пользователь может изменять содержимое div id = content. Новые изменения сохраняются в переменную с именем «содержание». Запрос ajax выполняется, когда пользователь щелкает значок сохранения, и оба значения contentOrig и передаются как 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 –
, даже если я прокомментирую эту строку, которая устанавливает $ admin_site_user, она по-прежнему не работает. Я знаю, что строковое значение $ contentSave существует как строка в строковом значении $ dataNew ... Я просто не знаю, почему его не нашли. Может ли проблема, связанная с тем, что значение строки имеет HTML-теги? – kharrell