0

PHP の if ステートメント内で、Google AdWords コンバージョン トラッキング コードの Javascript をエコーアウトしようとしています。私はたくさんのグーグル検索を行いましたが、コードを適切に実行するためにエスケープする必要がある文字の決定的なリストを見つけることができないようです. 誰にも提案がありますか?

コードのこの最初のビットは、変換コード スニペットでインクルードを呼び出す if ステートメントの始まりです。

if ( @mailit ) {
include ("conversioncodes.php");

これは、適切にエスケープする方法を見つけようとしているコード スニペットを含む conversioncodes.php の内容です。目標は、if ステートメントの条件が満たされたときに変換コードが変換を追跡するようにすることです。

echo "<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>";
4

4 に答える 4

3

PHP 5.3 以降を使用していると仮定すると、 NOWDOCを使用するだけで解析は行われないため、何もエスケープする必要はありません。

echo <<<'ENDMARKER'
<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>
ENDMARKER;
于 2009-12-17T23:01:37.900 に答える
3

代わりに一重引用符を使用してください。

echo '<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>'

オフ: シングル クォーテーションはダブル クォーテーションよりも数倍高速です。

于 2009-12-17T23:07:52.490 に答える
1

おそらくphpから抜け出しますか?このようにして、構文の強調表示もできるだけ明確に保ちます。

?>
<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>
<?php

補足として、ここで実際に欠けている要素は、ある種のテンプレートを提供する強力な方法であることを覚えておいてください。テンプレートを使用すると、php の処理が非常に簡潔になり、プレゼンテーション ロジックがビジネス ロジックから分離されます。本格的なテンプレート エンジンを使用しない場合は、少なくとも個別の php ファイルをテンプレートとして使用することを強くお勧めします。

于 2009-12-17T23:07:48.350 に答える
0

少し前に同じ問題で混乱しました。一般的な答えは、実際には些細なことではありません。

私はあきらめて、コードを書き直して使用json_encode()しました。これにより、すべてが非常に簡単に整理されました。そして書き直しも早かったです。もっと早く考えていれば、もっと時間を節約できたのに。

JSスクリプトに渡す必要があるデータをオブジェクトまたは配列にパッケージ化し、json_encode()それを記述します。

于 2009-12-17T23:27:08.783 に答える