【问题标题】:PHP OB_START which double quotesPHP OB_START 其中双引号
【发布时间】:2013-07-19 21:32:47
【问题描述】:

我正在使用 php on_start 和 ob_get_contents 来回显 html 并存储在变量中。但是,当我 json 编码并检查输出时,它不会输出整个字符串。谁能帮忙指出我做错了什么

    ob_start();
   echo'<a href=\"javascript:pixlr.edit({image:\"http://mywebite.com/uploads/$photo\", title:\" $photoFileNameProper\", service:\"express\", exit:\"http://mywebsite.com/home\", method:\"get\", locktarget: \"true\", target:\"http://mywebsite.com/plixr.php\", locktitle :\"true\"});\" id=\"uploadedPhoto\" title=\"click to enhance photo\"><img src=\"images/editphotohover.png\"/></a>\"';

  $photo = ob_get_contents();
  ob_end_clean();

我只得到结束锚标记 在 json 编码输出中

【问题讨论】:

  • 你为什么要用ob_start来做,而你可以把它分配给一个变量?将 echo 替换为 $photo = 即可。
  • @GigaWatt 假设代码是一个更大文件的摘录 - 其中 ob_start() 有意义...

标签: php json ob-start


【解决方案1】:

这里不需要转义双引号

echo'<a href=\"javascri...

就这样写吧:

echo'<a href="javascri...

single quotes 中保留双引号!

另外,注意escaping within single quotes没有效果:

  • "\t" 呈现为一个制表符
  • '\t' 呈现为 \t

PHP documentation 声明如下:

  • 要指定文字单引号,请使用反斜杠 (\) 对其进行转义。
  • 要在单引号之前或字符串末尾指定文字反斜杠,请将其加倍 (\\)。
  • 请注意,尝试转义任何其他字符也会打印反斜杠。

因此,这段代码怎么样:

echo'<a href="javascript:pixlr.edit(
                { image: \'http://mywebite.com/uploads/$photo\',
                  title: \'' . $photoFileNameProper . '\',
                  service: \'express\',
                  exit:\'http://mywebsite.com/home\',
                  method: \'get\',
                  locktarget: \'true\',
                  target: \'http://mywebsite.com/plixr.php\',
                  locktitle: \'true\'
                });"
         id = "uploadedPhoto" 
         title = "click to enhance photo">
         <img src="images/editphotohover.png"/>
         </a>'
        ;

【讨论】:

  • 好吧,你仍然需要在单引号字符串中转义两个东西:' 和 `\`
  • @KwaasiDjin 看看我附加的答案。您需要转义内部引号。
  • @SteAp 它仍然无法正常工作。由于某种原因,它只选择锚标记
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多