Какие символы необходимо экранировать при отображении Javascript в PHP? - PullRequest
0 голосов
/ 18 декабря 2009

Я пытаюсь повторить Javascript для кода отслеживания конверсий Google AdWords в выражении PHP if. Я провел множество поисков в Google, но не могу найти окончательный список символов, которые мне нужно экранировать, чтобы код выполнялся правильно. У кого-нибудь есть предложения?

Этот первый бит кода является началом оператора if, который вызывает включение с фрагментом кода преобразования:

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

Это содержимое файла перекодировки.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 ]

3 голосов
/ 18 декабря 2009

Просто используйте одинарные кавычки.

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>'

Выкл .: одинарные кавычки в несколько раз быстрее двойных, и под несколькими я имею в виду ЛОТ.

3 голосов
/ 18 декабря 2009

Предполагая, что вы используете 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;
1 голос
/ 18 декабря 2009

Может, просто вырваться из 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-файлы в качестве шаблонов, если не использовать полноценный шаблонизатор.

0 голосов
/ 18 декабря 2009

Я запутался в одной и той же проблеме некоторое время назад. Общий ответ действительно не тривиален.

Я сдался и переписал свой код для использования json_encode(), который очень легко все разобрал. И переписать было быстро тоже. Я бы сэкономил много времени, если бы подумал об этом раньше.

Упакуйте в объект или массив данные, которые вам нужны для вашего JS-скрипта, json_encode() его и запишите.

...