3

このjavascript関数をphp変数に格納する方法を理解することはできません。基本的に、この関数を標準の文字列として php 変数に保存し、ページに出力したいと考えています。PHP で動作させるには javascript をエスケープする必要があることはわかっていますが、これに固執している理由は、この特定の Javascript と HTML の組み合わせが " と ' の両方を使用しているように見えるためです。逃げてくれ。助けてくれませんか?

php 変数に格納するコードは次のとおりです。

<a href='javascript:PopupContact_OpenForm("PopupContact_BoxContainer","PopupContact_BoxContainerBody","PopupContact_BoxContainerFooter");'><img src='/popup-contact-form.jpg' /></a>
<div style="display: none;" id="PopupContact_BoxContainer">
    <div id="PopupContact_BoxContainerHeader">
        <div id="PopupContact_BoxTitle">Contact Us</div>
        <div id="PopupContact_BoxClose"><a href="javascript:PopupContact_HideForm('PopupContact_BoxContainer','PopupContact_BoxContainerFooter');">Close</a></div>
    </div>
    <div id="PopupContact_BoxContainerBody">
        <form action="#" name="PopupContact_Form" id="PopupContact_Form">
        <div id="PopupContact_BoxAlert"> <span id="PopupContact_alertmessage"></span> </div>
        <div id="PopupContact_BoxLabel_Page"> Your Name </div>
        <div id="PopupContact_BoxLabel_Page"><input name="PopupContact_name" class="PopupContact_TextBox" type="text" id="PopupContact_name" maxlength="120"></div>
        <div id="PopupContact_BoxLabel_Page"> Your Email </div>
        <div id="PopupContact_BoxLabel_Page"><input name="PopupContact_email" class="PopupContact_TextBox" type="text" id="PopupContact_email" maxlength="120"></div>
        <div id="PopupContact_BoxLabel_Page"> Enter Your Message </div>
        <div id="PopupContact_BoxLabel_Page"><textarea name="PopupContact_message" class="PopupContact_TextArea" rows="3" id="PopupContact_message"></textarea></div>
        <div id="PopupContact_BoxLabel_Page"><input type="button" name="button" class="PopupContact_Button" value="Submit" onClick="javascript:PopupContact_Submit(this.parentNode,'/popup-contact-form/');"></div>
    </form>
    </div>
</div>
        <div style="display: none;" id="PopupContact_BoxContainerFooter"></div>

私の言いたいことがわかるといいのですが、$button 変数に保存したいと思います。

ありがとう!

4

4 に答える 4

4

全体を一重引用符で囲み、その中のすべての一重引用符を のようにエスケープすることもできますが\'、PHP のnowdoc構文を使用する方がはるかに優れた方法です。

$str = <<<'STR_HTML'
  // All your HTML goes here
STR_HTML;

PHP のバージョンが 5.3 より前の場合は nowdoc を使用できないため、代わりに heredoc を使用する必要があります。違いは、二重引用符 (heredoc) と単一引用符 (nowdoc) の違いに似ています。

詳細については、文字列に関する PHP マニュアル ページを参照してください。

于 2013-05-21T23:13:04.757 に答える
2

最善の方法は、JavaScript 関数を別のファイルに移動することです。それらを PHP に混在させると、多くの混乱が生じます。

あなたのPHPで:

<html>
    <head>
        <script src="path/to/my/script.js"></script>
    </head>
    <body>
    ....
</html>

スクリプト ファイル内:

function PopupContact_OpenForm( ... ) {
    ...
}

これにより、ソース コードを整理し、PHP と JavaScript を混在させることなく関数を追加することがはるかに簡単になります。

(まだすべてを PHP ファイルに保持したい場合は、他の人が提案するように HEREDOC を使用してください。)

于 2013-05-21T23:15:50.567 に答える
1

救助へのヒアドキュメント構文!

于 2013-05-21T23:13:52.543 に答える
0

コードと html が混在する変数にそのすべてを含めるのは、本当に良くありません。

ただし、質問に答えるには、ヒアドキュメントを使用してください。

$bar = <<<LABEL
Nothing in here...
LABEL;
于 2013-05-21T23:16:36.023 に答える