在没有PHP解释分隔符的情况下输出PHP分隔符(<! - ?php,? - >)

时间:2011-12-11 20:44:20

标签: php javascript interpreter

我在JavaScript文件中运行PHP,例如......

var = '<?php /*some code*/ ?>';).

我需要使用JavaScript来扫描PHP分隔符的字符串(&lt;?php和?&gt;打开和关闭PHP)。

我已经使用JavaScript了解代码...

if (b.value.indexOf('<?php')>-1) {alert('PHP delimiter found.');}

我遇到的问题是我需要保持PHP在JavaScript文件中解释的能力(没有例外)。我只需要在JavaScript中将分隔符字符串输出到客户端,而不是由服务器解释它们。

所以最终输出(来自客户的视图)将是......

if (b.value.indexOf('<?php')>-1) {alert('PHP delimiter found.');}

使用以下代码......

if (b.value.indexOf('<?php echo '<?php'; ?>')>-1 || b.value.indexOf('<?php echo '?>'; ?>')>-1)

我收到错误:“解析错误:语法错误,意外T_LOGICAL_AND”

5 个答案:

答案 0 :(得分:2)

Javascript永远不会在你的字符串中找到<?php,因为它们已经被你的PHP服务器解析过了。 Javascript是一个客户端脚本,在服务器端脚本之后执行。

答案 1 :(得分:1)

您可以利用Javascript将十六进制解析为字符的能力:

if (b.value.indexOf('<\x3fphp')>-1) {alert('PHP delimiter found.');}

在Javascript中'<\x3fphp''<?php'完全相同,但在PHP中没有任何意义。

答案 2 :(得分:0)

在PHP上使用输出缓冲,然后在缓冲输出上使用htmlspecialchars()。然后,您使用JavaScript搜索HTML实体。

答案 3 :(得分:0)

我想到的第一件事应该是这个简单,小小的“作弊”:

<?php echo '<'.'?php'; ?>

php解释器没有看到<?php,但输出是按照需要的。

答案 4 :(得分:0)

<?php echo '<?php'; ?> ... <?php echo '?>'; ?>