Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


Мигрирането към Ubutnu ми носи само наслада. В последните две години аз публикувам в блога тук само от тази система. Случва се да показвам код и за целта ползвам този on-line конвертор. Работата с него обаче е пипкава, изисква време за обработка, друг път не отговаря. Споходи ме идея да си направя подобен конвертор на моята машина. В Ubuntu демон Apache винаги е вдигнат, а PHP налице. Тогава смело напред.

Чайковски - Славянски марш

теория за редове, съдържащи html-код

Доста често публикувам код, съдържаш html-тагове. Кодът се обработва от браузъра и прави тези html-тагове невидими. Това му е предназначението, да интерпретира всички html-тагове в съответствие с стандартите на HTML. Съгласете се никак не е удобно, всеки път да ровим изходния код от "задната страна" на браузъра в желанието си да узнаем как са постигнати нещата. Налага се да покажем задния двор отпред, тоест, да публикувам html-таговете, така, че те да не бъдат форматирани. За целта умни хора са създали функция htmlspecialchars().

Функция htmlspecialchars() приема три параметъра и по-обстойно за нея от документацията на PHP. Тази функция превежда специалните символи, например:
«<», «>», «&», «"» , «'»

в техните същности на език HTML, съответно:
«&lt;», «&gt;», «&», «&quot;» , «'»

Трудно е да се нарече език, но това е тема за друг разговор и за собствено удобство нарушавам правилото..

Функция htmlspecialchars() прекодира най-често използваните спецсимволи. Ако се налага конвертиране на всички символи в техните HTNL същности се прибягва до функция htmlentities().

С думи прости, тази функция гарантира, че ако решите да напишете произволен код (php, javascript, html и т.н.), то той ще се изобрази нормално от браузъра, но няма да се изпълни.

практика - Profruit htmlspecialcharts конвертор

Първо създавам нов каталог в root директорията на Apache - /var/www/htmlspecialcharts и вътре помествам два php файла. Главен индекс, съдържащ формата и обработчик.

root директорията на Apache

Практическото изпълнение на конвертора. В ляв таб конвертитам кода, за да го публикувам тук в поредната си тема. Удобно, нали?

Profruit htmlspecialcharts конвертор


Код на индекс 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('&', '&amp;', $msg);
    $msg = str_replace('&amp;amp;', '&amp;', $msg);
    $_SESSION['msg'] = $msg;
    header('Location: index.php');
    exit; 
 }
else{
    header('Location: index.php');
 }
Поредицата функции постигат желаното. С trim() режа празни символи, дошли от копиране. Резултата подавам на htmlspecialchars(). Тя връща същностите. Резултатът от нея не е достатъчен и необходима още една конвертация, която полагам на функция str_replace(). Презастраховам се от двойно натискане на бутон конвертирай и пак през същата функция с леки изменения. Защо? Защото това е домашно.

Крайният резултат закачаме на променлива $_SESSION['msg'] и пренасочваме обратно към индекса.

На печелившите честито. На мен браво!





до нови срещи   ^.^

12.11.2011 profruit 

|

1 Response to "htmlspecialchars конвертор"

  1. Славчо Said,

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

     

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога