htmlentities i znak ó - pozbywamy się encji ó

htmlentities, to funkcja, która przydaje się zawsze wtedy, gdy chcemy zabezpieczyć nasz skrypt przed wstrzyknięciem kodu lub części zapytania SQL. Wielu uważa, że htmlentities zamienia tylko znaki [<>&'"] na encje. Niestety prócz wspomnianych znaków htmlentities konwertuje również szereg znaków specjalnych, w tym znak "ó". Dzieje się tak ponieważ, ów znak należy do rozwinięcia tabeli kodów ASCII, a jego wartość wynosi 0xF3.

Istnieją dwa sposoby rozwiązania tego problemu. Jeśli chcemy konwertować wszystkie znaki specjalne, prócz znaków diakratycznych naszego języka, to możemy użyć funkcji str_replace, dzięki której zaraz po konwersji ciągu znaków na encje, będziemy w stanie przywrócić nasze "ó".

Drugi sposób, to użycie funkcji htmlspecialchars, która w przeciwieństwie do htmlentities, zamienia tylko znaki, które mogą zaszkodzić naszej aplikacji.

 



Proszę zważać na to co piszecie w komentarzach. Wpisy zawierające idiotyczne, obraźliwe, wulgarne, ubogie merytorycznie lub niezgodne z polskim prawem treści będą usuwane.




Bogus

Niestety sposób z htmlspecialchars nie działa. W php 5.2.9 jedna i druga funkcja zamieniaja ó na &oacute;

Bogus

Zwracam honor, dziala idealnie:)

Idalo mi sie naprawic problem z Zend_Filter_HtmlEntities w taki sposob:

class My_Filter_HtmlSpecialChars extends Zend_Filter_HtmlEntities{
public function filter($value)
{
return htmlspecialchars((string) $value, $this->_quoteStyle, $this->_charSet);
}
}