开发者

Print less-than and greater-than symbols in PHP

I am have troubles trying to print out < > symbols in HTML using PHP.

I am appending a string "<machine>" to a variable.

Example:

$output .= " <machine> ";
echo $output;

I tried using escapes, but that d开发者_如何学Goidn't help. Any advice?


&gt; = >
&lt; = <

Or you can use htmlspecialchars.

$output .= htmlspecialchars(" <machine> ");


If you are outputting HTML, you cannot just use < and > : you must use the corresponding HTML entities : &lt; and &gt;


If you have a string in PHP and want to automatically replace those characters by the corresponding HTML entities, you'll be interested by the htmlspecialchars() function (quoting) :

The translations performed are:

  • '&' (ampersand) becomes '&amp;'
  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
  • "'" (single quote) becomes '&#039;' only when ENT_QUOTES is set.
  • '<' (less than) becomes '&lt;'
  • '>' (greater than) becomes '&gt;'


In your case, a portion of code like this one :

$output = " ";

echo htmlspecialchars($output, ENT_COMPAT, 'UTF-8');

Would get you the following HTML code as output :

 &lt;machine&gt; 


And, just in case, if you want to encode more characters, you should take a look at the htmlentities() function.


Your trouble is not with PHP, but rather with the fact that < and > are used in HTML. If you want them to display in the browser, you probably want to print out their escaped entity versions:

  • < is &lt;
  • > is &gt;

You can also use the htmlspecialchars() function to automatically convert them:

echo htmlspecialchars("<machine>");


You need to turn them into e.g. &lt; and &gt; - see the htmlentities() or htmlspecialchars() functions.


echo htmlentities($output);

or

echo htmlspecialchars($output);

If you don't want to bother manually going through your string and replacing the entities.


use "htmlspecialchars_decode()"

e.g.

<?php 
$a= htmlspecialchars('<?php ');
$a=$a.htmlspecialchars('echo shell_exec("ipconfig"); ');
$a=$a.htmlspecialchars('?>');

echo htmlspecialchars_decode($a);
?> 


The < and > symbols should be shown in the HTML source but the "<machine>" is interpreted as XML tag. Use htmlentities() to convert all special characters in the String into their HTML-equivalents, or use "&lt;machine&gt;"

Solution:

$output .= " <machine> ";
$output = htmlentites($output);
echo $output;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜