带有矛盾编码的PHP Echo脚本

时间:2017-05-07 08:47:13

标签: javascript php echo

我的网站需要比Adsense更灵活的广告类型,因此我使用JuicyAds作为替代方案。

问题是他们的代码在他们的脚本中使用了"',这使得使用PHP回显它变得很尴尬。这就是我所拥有的:

$ad_header = '
<!-- JuicyAds v3.0 -->
<script async src="//adserver.juicyads.com/js/jads.js"></script>
<ins id="228912" data-width="300" data-height="262"></ins>
<script>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':228912});</script>
<!--JuicyAds END-->
';

正如您在此处所看到的,有一部分id="228912",还有一个'adzone':,我使用'符号来保存广告。

然后使用<?php echo $header_ad; ?>在页面上回显。但是由于两种类型的符号一起运行,这会导致冲突。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

$ad_header = <<<'EOF123'
<!-- JuicyAds v3.0 -->
<script async src="//adserver.juicyads.com/js/jads.js"></script>
<ins id="228912" data-width="300" data-height="262"></ins>
<script>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':228912});</script>
<!--JuicyAds END-->
EOF123;

您现在可以回显$ ad_header。我们了解到,您可以使用'\'手动更改",但这不是通用答案。如果你有一千个这样的'怎么办?是的,搜索和替换可能很有用,所以可以逃避。但我认为这个块字符串是PHP中添加的一个功能,只是为了解决这个问题。无论如何,记得要声明EOF123部分,它必须是代码中找不到的东西。我喜欢随机字符串。

编辑:正如托马斯指出的那样,我只是错过了它,使用newdoc风格而不是heredoc风格。我已经更新了答案。托马斯,非常感谢男人!