2011-12-11 47 views
1

我在JavaScript文件上運行PHP,如...輸出PHP分隔符(<?php, ?>),而PHP解釋符

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

我需要使用JavaScript來掃描PHP定界符一個字符串(<?php和?>打開並關閉PHP)。

我已經知道使用JavaScript代碼...

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

什麼我遇到的麻煩是,我需要保持的能力PHP在JavaScript文件(無例外)被interpretted。我只需要在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「

+4

上你究竟想幹什麼? –

+0

在最後一個例子中,您可能只有引用問題。您正在使用單引號來啓動JavaScript字符串和單引號來回顯PHP字符串。我不確定這是否是一個問題,但它可能是。 – ontrack

+1

我試圖阻止客戶端提交PHP,我已經在服務器上攔截它。 – John

回答

1

你可以利用JavaScript的解析十六進制的角色能力:

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

在Javascript中'<\x3fphp'是完全一樣的東西'<?php',但它在PHP沒有意義。

+0

試一試,看起來最有前途... – John

+0

這不僅僅是它的工作,它不需要PHP從而節省即使少量的服務器負載,謝謝! – John

0

在PHP上使用輸出緩衝,然後在緩衝輸出上使用htmlspecialchars()。然後您使用JavaScript搜索HTML實體。

+0

但是,對於這種特定情況,我非常感謝您使用JavaScript解決了這個問題。雖然有趣的方法。 – John

2

Javascript永遠不會在您的字符串中找到<?php,因爲它們已經被您的PHP服務器解析。 Javascript是一個客戶端腳本,並在服務器端腳本之後執行。

+0

我對OOP PHP進行了編程,並且對客戶端和服務器語言都有了進一步的理解。 – John

+0

@Pierre -1(以對付上漲)重申問題不是一個答案。 – Paulpro

+2

@john,對不起,但它似乎不是因爲你問這個問題。要麼讓你的問題更清楚,要麼反駁我,要麼從中吸取教訓。 – Dykam

0

是進入了我的心靈,應該工作的第一件事就是這個簡單的,有點「欺騙」:

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

PHP解釋器沒有看到一個<?php,但輸出是需要的。

+0

試過,由於某種原因,它仍然解釋(至少在這種情況下),謝謝你嘗試。 – John

0

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

+0

啊,oezi打敗了我......我正在用手機打字。不需要字符串連接tho – shesek

+0

感謝您的嘗試,但不幸的是這正是解釋。我也試圖使用多個回聲失敗。 – John