如何从代码中删除斜杠?

时间:2012-09-08 12:24:05

标签: json codeigniter datatables

我正在尝试了解代码中添加斜杠的位置。 我正在使用Ignited Datatables (native-php-version)为来自MySQL的数据生成ajax表。

来自MySQL的数据显示为我想要的但是Ignited Datatables函数允许我向表中添加额外的列并且问题从那里开始。

这就是我初始化添加额外列的方式:

->add_column('edit', '<a class="btn btn-mini btn-success" data-toggle="modal" href="#?page=customers-database-edit&id=$1">Edit</a>', 'face_id'); 

我添加的额外列应该只包含该链接,但在某种程度上,JSON是以这种方式生成的:

\n<a class="\&quot;btn" btn-mini="" btn-success\"="" data-toggle="\&quot;modal\&quot;" href="\&quot;?page=customers-database-edit&amp;id=3\&quot;">Edit&lt;\/a&gt; \n</a>

所以当你看到问题是代码被破坏并且斜线太多时。

这个代码的和平是负责添加带有链接的额外列:

public function add_column($column, $content, $match_replacement = NULL)
{
$this->add_columns[$column] = array('content' => $content, 'replacement' => $this->explode(',', $match_replacement));
return $this;
}

foreach($this->add_columns as $field => $val)
  if($this->check_mDataprop())
    $aaData[$row_key][$field] = $this->exec_replace($val, $aaData[$row_key]);
  else
    $aaData[$row_key][] = $this->exec_replace($val, $aaData[$row_key]);


protected function exec_replace($custom_val, $row_data)

{
  $replace_string = '';

  if(isset($custom_val['replacement']) && is_array($custom_val['replacement']))
  {
    foreach($custom_val['replacement'] as $key => $val)
    {
      $sval = preg_replace("/(?<!\w)([\'\"])(.*)\\1(?!\w)/i", '$2', trim($val));
      if(preg_match('/(\w+)\((.*)\)/i', $val, $matches) && function_exists($matches[1]))
      {
        $func = $matches[1];
        $args = preg_split("/[\s,]*\\\"([^\\\"]+)\\\"[\s,]*|" . "[\s,]*'([^']+)'[\s,]*|" . "[,]+/", $matches[2], 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

        foreach($args as $args_key => $args_val)
        {
          $args_val = preg_replace("/(?<!\w)([\'\"])(.*)\\1(?!\w)/i", '$2', trim($args_val));
          $args[$args_key] = (in_array($args_val, $this->columns))? ($row_data[($this->check_mDataprop())? $args_val : array_search($args_val, $this->columns)]) : $args_val;
        }

        $replace_string = call_user_func_array($func, $args);
      }
      elseif(in_array($sval, $this->columns))
        $replace_string = $row_data[($this->check_mDataprop())? $sval : array_search($sval, $this->columns)];
      else
        $replace_string = $sval;

      $custom_val['content'] = str_ireplace('$' . ($key + 1), $replace_string, $custom_val['content']);
    }
  }

  return $custom_val['content'];
}

我在添加斜杠的地方有点困惑,链接代码坏了吗?

以下是JSON的生成方式:

    protected function jsonify($result = FALSE)
    {
      if(is_null($result)) return 'null';
      if($result === FALSE) return 'false';
      if($result === TRUE) return 'true';

      if(is_scalar($result))
      {
        if(is_float($result))
          return floatval(str_replace(',', '.', strval($result)));

        if(is_string($result))
        {
          static $jsonReplaces = array(array('\\', '/', '\n', '\t', '\r', '\b', '\f', '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
          return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $result) . '"';
        }
        else
          return $result;
      }

      $isList = TRUE;

      for($i = 0, reset($result); $i < count($result); $i++, next($result))
      {
        if(key($result) !== $i)
        {
          $isList = FALSE;
          break;
        }
      }

      $json = array();

      if($isList)
      {
        foreach($result as $value)
          $json[] = $this->jsonify($value);
        return '[' . join(',', $json) . ']';
      }
      else
      {
        foreach($result as $key => $value)
          $json[] = $this->jsonify($key) . ':' . $this->jsonify($value);
        return '{' . join(',', $json) . '}';
      }
    }
  }

1 个答案:

答案 0 :(得分:0)

要从JSON数据中删除斜杠,可以使用PHP的stripslashes() function

这样:stripslashes($your_data);