输出PHP分隔符(<?php, ?>),无需php解释分隔符


Output PHP delimiter (<?php, ?>) without PHP interpreting the delimiters

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

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

我需要使用JavaScript扫描字符串的PHP分隔符(<? 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"

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

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

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

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

在PHP上使用输出缓冲,然后在缓冲的输出上使用htmlspecialchars()。然后使用JavaScript.

搜索HTML实体。

我想到的第一件事就是这个简单的小窍门:

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

php解释器没有看到<?php,但输出与期望一致。

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