防止PHP自动转义返回的字符串?

时间:2011-04-27 17:15:10

标签: php markdown

我有一个函数,它返回一个jQuery插件的HTML代码字符串,使用PHP Markdown解析:

function awesome_function() {
  $html = Markdown('# Hello World!');
  return $html;
}

...但PHP(5.3.2)会返回:

"<h1>Hello World!<\/h1>\n"

...而不是我想要的,这就是:

<h1>Hello World!</h1>

如何让它返回非转义的HTML值?将return更改为echo有效,但我返回的函数的return状态也是如此(true | false | null),这是我不想要的。


编辑:不确定它是否相关,但我刚才意识到我可能应该提到我的函数是一个类的公共函数,如下:

class Awesome {
  public function awesome_function() { /* ... */ }
}

对于@fredrick:

$('.edit').editable('/controllers/awesome_controller.php', {
  id: 'identifier',
  name: 'content',
  submitdata: { action: 'awesome_function' },
  submit: 'Ok',
  cancel: 'Cancel',
  loadurl: '/controllers/awesome_controller.php',
  loaddata: { action: 'load_original_markdown' }
});

3 个答案:

答案 0 :(得分:1)

使用stripslashes()后尝试使用Markdown

function awesome_function() {
  $html = Markdown('# Hello World!');
  $html = stripslashes($html);
  return $html;
}

在这里阅读: http://php.net/manual/en/function.stripslashes.php

答案 1 :(得分:0)

这可能与魔术引号有关 - 你可以在这里阅读http://php.net/manual/en/security.magicquotes.php

答案 2 :(得分:0)

正如我们所知,你的代码中有这样的东西:

$awesome = new Awesome();
echo json_encode($awesome->awesome_function());

json_encode会在输出中添加斜杠,当你回显而不是从awesome_function返回时,将回显两个值,HTML,以及来自awesome_function的json_encoded响应(true | false | null)。