0

私は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エンコード出力で終了アンカータグのみを取得します

4

1 に答える 1

1

ここで二重引用符をエスケープする必要はありません

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

これを書くだけです:

echo'<a href="javascri...

二重引用符は、単一引用符で囲まれている間保持されます!

さらに、一重引用符内でエスケープしても効果がないことに注意してください。

  • "\t"TABULATOR 文字として表示されます
  • '\t'としてレンダリングします\t

PHPのドキュメントには、次のように記載されています。

  • リテラルの一重引用符を指定するには、バックスラッシュ (\) でエスケープします。
  • 一重引用符の前または文字列の末尾にリテラルのバックスラッシュを指定するには、それを二重にします (\\)。
  • 他の文字をエスケープしようとすると、バックスラッシュも出力されることに注意してください。

したがって、次のコードはどうでしょうか。

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>'
        ;
于 2013-07-19T21:37:57.777 に答える