htmlspecialchars

3 отговора 200 прегледа
#1

htmlspecialchars

Здравейте

Когато използвам htmlspecialchars как да му разреша да интрепретира кирилицата. Защото в случай на български не се визуализира

Отговор
в отговор на Someone #2

Re: htmlspecialchars

Bi mogul da si napishesh sobstwen htmlspecialchars()

naprimer
function MyHtmlspecialchars($string)
{
$string = str_replace("<","&lt;",$string);
$string = str_replace(">","&gt;",$string);
$string = str_replace("\"","&quot;",$string);
..........
return $string;
}


taka mojesh da si escape-wash kwot si iskash

P.S. na mestoto na tochkite slagash amnalogichni redowe za ostanalite simwoli koito te pritesnjawat

Редактирано от NastyBUFF на

Отговор
в отговор на NastyBUFF #3

Re: htmlspecialchars

Ами аз си мисля че можеш да ползваш и това
(в случай че те мързи да пишеш всеки символ по отделно)
При всички положения това което Бъф ти писа е решение.


<?
$foo = "<font color=#ffff00>Кирилица</font>";

function MyLazyHtmlStripper($foo)
{
for ($i=0; $i<strlen($foo); $i++) {
$char_val = ord($foo[$i]);
if ($char_val > 192 and $char_val < 255 ){
$ret_str .= $foo[$i];
} else {
$ret_str .= htmlspecialchars($foo[$i]);
}
}
return $ret_str;
}
?>
Отговор
в отговор на bofh #4

Една корекция

Ами тъй като писах предищния си постинг както обикновенно за 5 мин се замислих днес,че съм допуснал грешка.

Значи кирилишките символи се намират в интервала (191,256) т.е това което съм написал по горе

if ($char_val > 192 and $char_val < 255 ){

да се чете

if ($char_val > 191 and $char_val < 256 ){

Този бъг обаче ми показа че голямо А и малко я минават през htmlspecialchars(), което от своя страна,заедно с мнението ти че кирилицата изчезва, води до извода че проблема ти е някъде другаде. Мисля че трябва да търсиш някакво решение с помощта на
string convert_cyr_string (string str, string from, string to)

k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillic

Така или иначе успех :)
bofh

Отговор