Ja, jag vill kunna ha en spärr för all htmlkod utan den kod som jag själv väljer skall tillåtas. Ska även kunna föra som ovan och ge egna koder för ex kursiv stil m.m
Det finns en inbyggd funktion som heter strip_tags(), man kan även ange taggar som tillåts. Vet dock inte vad den funktionen gör med dina specialtaggar...
Jag har inget på lager, men du kan ju testa att byta ut det som matchar i strängarna.
$match = array('<font','</font>','<i>','</i>');
$replace = '';//vet inte om du vill ha något, peta in det i sa fall?
function html_cleaner($text,$replace,$match)
{
$text = str_replace($match,$replace,$text);
return $text;
}
Denna funktionen fungerar så länge det inte är några attribut på din "HTML"-kod.
<?php
/**
* Tags to replace inside prettify-function
*/
$prettify_tags = array(
'bla' => '<font color="blue">$1</font>',
'lila' => '<font color="purple">$1</font>',
'kursiv' => '<i>$1</i>',
);
/**
* Prettify text
*
* @param Unsafe string, input
* @param Charset to use for htmlspecialchars
* @param Quote style to use for htmlspecialchars, default no escape of quotes
* @return Safe string
*/
function prettify($us, $charset = 'ISO-8859-1', $quote_style = ENT_NOQUOTES)
{
global $prettify_tags; // This should really be a class, but global works
// Always escape HTML
$s = htmlspecialchars($us, $quote_style, $charset);
foreach ($prettify_tags as $tag => $replace) {
// < and > because the < and >'s are escaped above
$s = preg_replace("@<$tag>(.*?)</$tag>@", $replace, $s);
}
return $s;
}
Som ett svar på din fråga (applicerat i ovanstående funktion):
Steg 1: escapea all HTML.
Steg 2: gå igenom varje tagg och ändra <tagg> (escapeade <>) till <riktig html-tagg></riktig html-tagg>.
Steg 3: skriv ut den nya strängen.
Steg 4: det finns inget steg fyra. (Vidareutveckling kan dock vara att steg tre blir "kolla så att <bla>textsom ska bli<lila>lila</bla> men som ska bli blå</lila> inte funkar, eller funkar bättre")