теория за редове, съдържащи html-код
Доста често публикувам код, съдържаш html-тагове. Кодът се обработва от браузъра и прави тези html-тагове невидими. Това му е предназначението, да интерпретира всички html-тагове в съответствие с стандартите на HTML. Съгласете се никак не е удобно, всеки път да ровим изходния код от "задната страна" на браузъра в желанието си да узнаем как са постигнати нещата. Налага се да покажем задния двор отпред, тоест, да публикувам html-таговете, така, че те да не бъдат форматирани. За целта умни хора са създали функция htmlspecialchars().Функция htmlspecialchars() приема три параметъра и по-обстойно за нея от документацията на PHP. Тази функция превежда специалните символи, например:
«<», «>», «&», «"» , «'»
в техните същности на език HTML, съответно:
«<», «>», «&», «"» , «'»
Трудно е да се нарече език, но това е тема за друг разговор и за собствено удобство нарушавам правилото..
Функция htmlspecialchars() прекодира най-често използваните спецсимволи. Ако се налага конвертиране на всички символи в техните HTNL същности се прибягва до функция htmlentities().
С думи прости, тази функция гарантира, че ако решите да напишете произволен код (php, javascript, html и т.н.), то той ще се изобрази нормално от браузъра, но няма да се изпълни.
практика - Profruit htmlspecialcharts конвертор
Първо създавам нов каталог в root директорията на Apache - /var/www/htmlspecialcharts и вътре помествам два php файла. Главен индекс, съдържащ формата и обработчик.Практическото изпълнение на конвертора. В ляв таб конвертитам кода, за да го публикувам тук в поредната си тема. Удобно, нали?

Код на индекс php файл
<?php
session_start();
if(empty($_SESSION)){$_SESSION['msg'] = null;}
?>
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Конвертор</title>
</head>
<body bgcolor="#F7FBFC">
<h3>Въведи кода</h3>
<form action="processor.php" method="POST">
<p><textarea cols="80" rows="20" name="msg"><?=$_SESSION['msg'] ?></textarea></p>
<p><input type="submit" value="конвертирай"> <input type="button" value="изчисти" onClick="window.location.reload()"></p>
</form>
<?php
unset($_SESSION['msg']);
session_destroy();
?>
</body>
</html>
Кодът, който виждате е благодарение на конвертора и това е идеята му, ОК? А от снимката над него придобивате представа как ще изглежда. Спартански вид и повече не е нужно, затова без стилове.
Замисълът е полето на формата да приема и пак там да връща. За целта ползвам сесия, която след визуализиране убивам. Бутон изчисти се управлява от JavaScript. Всяко натискане чисти напълно полето и презарежда страницата, така гарантирам чиста форма за пореден код. В самото начало проверявам глобален масив $_SESSION за съдържание и при липса, унищожавам променливата $_SESSION['msg'], после JavaScript и всичко ток, и жици.
Код на обработчик php файл
<?php
session_start();
if (isset($_POST)){
$msg = trim($_POST['msg']);
$msg = htmlspecialchars($msg);
$msg = str_replace('&', '&', $msg);
$msg = str_replace('&amp;', '&', $msg);
$_SESSION['msg'] = $msg;
header('Location: index.php');
exit;
}
else{
header('Location: index.php');
}
Поредицата функции постигат желаното. С trim() режа празни символи, дошли от копиране. Резултата подавам на htmlspecialchars(). Тя връща същностите. Резултатът от нея не е достатъчен и необходима още една конвертация, която полагам на функция str_replace(). Презастраховам се от двойно натискане на бутон конвертирай и пак през същата функция с леки изменения. Защо? Защото това е домашно.Крайният резултат закачаме на променлива $_SESSION['msg'] и пренасочваме обратно към индекса.
На печелившите честито. На мен браво!
до нови срещи ^.^

Благодаря на "Любчо Профруит" за добрите статии в блога !!
Тхумбс уп дето се казва . :)