Jak vypnout překlad HTML entit v TEXTAREA

13. leden 2021 | 07.05 | rubrika: servery všeobecně

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>";

entity textarea
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



Komentáře k článku: Jak vypnout překlad HTML entit v TEXTAREA

 
Zatím bez komentáře.

Zpět na hlavní stranu blogu