我正在尝试保存一个字符串,并且数据会在数组末尾出现我不想要的东西。
["bunch", "of", "stuff"]unwantedtext
我正在努力摆脱收盘后的一切。这是我最近的尝试。我最终得到一个空文件。
$toPost = substr($str, 0, strrpos($str, '\]'));
也许我的逃脱不正常?我也试过双引号。
以下是对原始问题的更新。
这是我的Javascript功能:
goalChange = function() {
var i, key, len, postThis;
key = void 0;
postThis = {};
i = 0;
len = localStorage.length;
while (i < len) {
key = localStorage.key(i);
postThis[key] = "" + localStorage.getItem(key);
i++;
}
postThis.goals = localStorage.getItem("goals");
postThis.userid = username;
return $.ajax({
url: "goalChange.php",
type: "POST",
data: postThis,
success: function(response, textStatus, jqXHR) {
return console.log("Yay, the save worked!");
},
error: function(jqXHR, textStatus, errorThrown) {
return console.log("Didn't work so good...");
}
});
};
这是PHP文件:
<?
if ($_POST) {
$user = $_POST['userid']; // ADDED THIS LINE AND CHANGED NEXT TO GET STUFF INTO THE USERS OWN FILE
$logFile = dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $user . ".json";
if (!file_exists($logFile)) {
touch($logFile);
chmod($logFile, 0777);
}
$newStr = ($_POST);
$str = str_replace('\\', '', $newStr);
$toPost = substr($str, 0, strrpos($str, ']'));
file_put_contents($logFile, $toPost);
echo "OK";
return;
}
我需要使用userid以正确的名称保存文件。这是有效的,但该文件将用户标识添加到我想要保留的数组的末尾。
感谢您的帮助。
答案 0 :(得分:3)
尝试..
$text = '["bunch", "of", "stuff"]unwantedtext';
$text = substr($text,0, strpos($text,"]")+1 );
echo $text;
我不明白..你想检查'json'文件(例如)并且只想''[''东西?
<?php
$text = '["bunch", "of", "stuff"]unwantedtext ["bunchssdfs", "of", "stuxxxff"]dsfadffs';
preg_match_all("#(\[)(.*?)(\])#isU", $text, $matches);
if( sizeof( $matches ) > 0 ){
$myMatches = $matches[0];
echo implode(PHP_EOL,$matches[0]); // show matches..
}
答案 1 :(得分:0)
你的问题并不完全清楚,但是从代码判断,你试图将$_POST
变量保存为json字符串。
如果是这种情况,请不要手动生成json,而是使用json_encode
:
if ($_POST) {
$user = $_POST['userid']; // ADDED THIS LINE AND CHANGED NEXT TO GET STUFF INTO THE USERS OWN FILE
$logFile = dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $user . ".json";
if (!file_exists($logFile)) {
touch($logFile);
chmod($logFile, 0777);
}
file_put_contents($logFile, json_encode($_POST));
echo "OK";
}
请注意,您需要检查ajax调用的返回值,以确定保存是否真的有效。无论结果如何,当向服务器发出成功请求时,都会调用javascript中的success
函数。