Jak vypnout překlad HTML entit v TEXTAREA
Zrovna tohle jsem potřeboval řešit asi před 3 dny. Chvíli mě to potrápilo. Standadt HTML velí, že vše co jde do TEXTAREA dostane překlad entid. Takže neuvidíte žádné & lt; & gt; & amp; apd. Vždy rovnou <>&. Což je trochu problém, když potřebujete text editovat a uložit zpět do databáze a on se změní a zruší entity. Ani není možné si překlad udělat sám, protože nejde poznat co je přeloženo a co už bylo... ale jde to vyřešit!
Návod jsem na internetu nenašel. Takže můj postup je následující.
1) data nejprve opatřím mezerou za znakem & a tím vyřadím z provozu dekodování entit.
2) nechám zobrazit v TEXTAREA
3) javascriptem mezeru zase umažu a nezapoměnu, že se mi nahradil & za &
Hotovo, funguje to dobře.
function htmlchars($text){
$text = str_ireplace("<", "& amp; lt;", $text);
$text = str_ireplace(">", "& amp; gt;", $text);
return $text;}
echo"<textarea name=text id='prepis'>".htmlchars($text)."</textarea>
<script>
var txt = document.getElementById("prepis".innerHTML;
txt = txt.replaceAll("& lt;", "<"
txt = txt.replaceAll("& gt;", ">"
document.getElementById("prepis".innerHTML = txt;
</script>";
php kód, takto jde ošetřit všechny entity, které potřebujete. Mě stačilo vyřešit tyto dvě resp tři