php删除括号后的所有内容

时间:2013-12-20 01:49:34

标签: php regex string

我正在尝试保存一个字符串,并且数据会在数组末尾出现我不想要的东西。

["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以正确的名称保存文件。这是有效的,但该文件将用户标识添加到我想要保留的数组的末尾。

感谢您的帮助。

2 个答案:

答案 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函数。