2011-11-21 36 views
5

我有我的代碼串按照下面的例子:PHP字符串不允許< and >字符

<?php 
$find = '<tag'; 
$string = 'blah blah <tag=something>'; 
?> 

很簡單,但是當我嘗試呼應琴絃,它不順心的<或>字符。所有這一切得到的echo'ed是:

等等等等

所以,基本上我猜我需要轉義這些字符,讓他們在工作PHP但林不知道到底如何。我用這一個模板系統,所以在HTML文件一個文件可以包含使用:

<include="filename.html"> 

所以我並不需要隨時在屏幕上顯示的<和>字符,我只需要讀取文件,找到這些標籤的實例並做一些魔術。我已經掌握了所有這些部分的工作原理,但它只是包含多於/少於運算符的任何字符串,而這些運算符看起來沒有問題。

任何想法?

+0

你正在查看頁面的來源,還是隻看到瀏覽器顯示的視覺效果? –

+0

< and >不需要顯示到屏幕上,它只是存儲在一個字符串變量中。 – Amo

+0

[在PHP中打印小於和大於符號]可能的副本(http://stackoverflow.com/questions/6916023/print-less-than-and-greater-than-symbols-in-php) – mario

回答

3

您需要使用HTML字符以避免它變成HTML。

這樣:

echo htmlspecialchars("<hello>"); 
+4

從您引用的PHP文檔:*在數據庫查詢等需要引用的字符之前返回帶反斜槓的字符串。*與此有關的部分是什麼題? –

+0

哎呀! @David是對的 – tekknolagi

+0

這個函數根本不影響'<'括號。這是爲了逃避'和「字符串 –

8

使用PHP可以生成HTML標記,所以你必須找到區分HTML元素字符的方法(< &>)。在HTML中存在特殊的字符序列,稱爲HTML entities。這些用「&」符號描述,某種簡寫形式以分號結尾。

下面是一些例子:

&gt;  : > (greater-than) 
&lt;  : < (less-than) 
&amp; : & (ampersand) 
&raquo; : » (right angle quote marks) 
&eacute; : é (e acute) 

幾乎所有的字符,可以用這樣的實體來表示,但很快變得單調乏味。您只需記住網址<和>,再加上&。

如果您的意圖是顯示小於/大於號的符號,您的代碼應該像這樣重寫。

<?php 
$find = '&lt;tag'; 
$string = 'blah blah &lt;tag=something&gt;'; 
?> 

在其他的答案提到的,可以使用函數htmlspecialchars()將字符轉換在一個變量(例如,來自用戶的輸入)。

<?php echo htmlspecialchars($string); ?> 

將顯示blah blah <tag=something>用於觀看在Web瀏覽器。否則,例如,如果您在命令行上使用PHP,則不需要使用此功能。

相關問題