Diacriticele si htmlentities('...')
Moderatori: Moderatori, Start Moderator
- dducu
- PHPRomania Supporter
- Mesaje: 16
- Membru din: Mie Noi 17, 2004 10:55 am
- Localitate: Iasi
- Contact:
Diacriticele si htmlentities('...')
O mica problema: folosesc functia htmlentities('...') pentru a imi aparea ca atare tagurile html provenite dintr-un input, insa treaba asta face ca diacriticele sa imi apara asa & # 2 5 9; (am scris cu spatii deoarece am observat ca aici nu se intampla aceeasi treaba; ex.: <a href ="blabla">ăîâşţ;</a>). Stie cineva cum pot rezolva aceasta situatie? Multumesc anticipat!
Before doing something perfect, do something perfectible!
- dducu
- PHPRomania Supporter
- Mesaje: 16
- Membru din: Mie Noi 17, 2004 10:55 am
- Localitate: Iasi
- Contact:
Diacriticele si htmlentities('...')
Ideea e ca (poate nu am fost bine inteles) folosesc un <textarea> la fel de frumos ca si acesta in care scriu acum, in care daca introduc cod html, se stie foarte bine ca acesta nu va aparea ca atare in continuare, ci va fi compilat.
Exemplu:
-daca nu folosesc htmlentities() si scriu ceva de genul <a href="blabla">ăăă...</a> imi va aparea (acolo unde voi afisa ce a fost scris in respectivul <textarea>) un link catre ăăă...
-daca folosesc htmlentities() imi va aparea pt. exemplul de mai sus ceva de genul <a href="blabla">& # 259;& # 259;& # 259;...</a> ; ei bine, cam asta vreau si eu de fapt numai ca "ăăă... " sa se vada "ăăă...", nu "& # 259;& # 259;& # 259;..." .
Exemplu:
-daca nu folosesc htmlentities() si scriu ceva de genul <a href="blabla">ăăă...</a> imi va aparea (acolo unde voi afisa ce a fost scris in respectivul <textarea>) un link catre ăăă...
-daca folosesc htmlentities() imi va aparea pt. exemplul de mai sus ceva de genul <a href="blabla">& # 259;& # 259;& # 259;...</a> ; ei bine, cam asta vreau si eu de fapt numai ca "ăăă... " sa se vada "ăăă...", nu "& # 259;& # 259;& # 259;..." .
Before doing something perfect, do something perfectible!
Am facut cateva teste, si solutia pare a fi ceva de genul:
[php]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="post">
<textarea name="text"></textarea>
</form>
<?php
if (isset($_POST['text']))
{
$text = htmlentities($_POST['text'], ENT_QUOTES, 'UTF-8');
echo $text;
}
?>
</body>
</html>[/php]
Ideea este ca e dificil sa eviti (si nici nu e bine, teoretic) conversia entities-urilor HTML, dar trebuie s-o faci intr-un mod consecvent cu encoding-ul paginii HTML (si, implicit, si a valorilor trimise scriptului de catre form).
Ca encoding folosesc mai sus UTF-8 pentru ca ISO-8859-2 nu pare sa fie suportat de catre htmlentities().
Numa' bune.
[php]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="post">
<textarea name="text"></textarea>
</form>
<?php
if (isset($_POST['text']))
{
$text = htmlentities($_POST['text'], ENT_QUOTES, 'UTF-8');
echo $text;
}
?>
</body>
</html>[/php]
Ideea este ca e dificil sa eviti (si nici nu e bine, teoretic) conversia entities-urilor HTML, dar trebuie s-o faci intr-un mod consecvent cu encoding-ul paginii HTML (si, implicit, si a valorilor trimise scriptului de catre form).
Ca encoding folosesc mai sus UTF-8 pentru ca ISO-8859-2 nu pare sa fie suportat de catre htmlentities().
Numa' bune.
People ask for criticism, but they only want praise.
W. Somerset Maugham (1874 - 1965).
http://www.arond-design.ro
W. Somerset Maugham (1874 - 1965).
http://www.arond-design.ro
- dducu
- PHPRomania Supporter
- Mesaje: 16
- Membru din: Mie Noi 17, 2004 10:55 am
- Localitate: Iasi
- Contact:
Se pare ca nici una din variantele descrise mai sus nu au mers asa cum voiam, sau poate nu am fost destul de explicit de la inceput
In fine, pana la urma am rezolvat eu intr-un fel problema, desi intr-un mod care nu prea imi place, cam asa:
[php]
<?php
function decode_htmlentities($string)
{
$string = stripslashes(htmlentities($string));
$string = preg_replace("/ă/", "ă",$string);
$string = preg_replace("/Ă/", "Ă",$string);
$string = preg_replace("/ş/", "ş",$string);
$string = preg_replace("/Ş/", "Ş",$string);
$string = preg_replace("/ţ/", "ţ",$string);
$string = preg_replace("/Ţ/", "Ţ",$string);
return $string;
}
echo "<html><body><form method=\"post\">";
echo "<textarea name=\"text\"></textarea>";
echo "<input type=\"submit\"/>";
echo "</form>";
if (isset($_POST['text']))
echo decode_htmlentities($_POST['text']);
echo "</body></html>";
?>
[/php]
Astfel, acest script imi afiseaza un cod html exact cum il scriu, dar diacrititcile romanesti mi le afiseaza normal, nu & # xxx;
Voie buna!
In fine, pana la urma am rezolvat eu intr-un fel problema, desi intr-un mod care nu prea imi place, cam asa:
[php]
<?php
function decode_htmlentities($string)
{
$string = stripslashes(htmlentities($string));
$string = preg_replace("/ă/", "ă",$string);
$string = preg_replace("/Ă/", "Ă",$string);
$string = preg_replace("/ş/", "ş",$string);
$string = preg_replace("/Ş/", "Ş",$string);
$string = preg_replace("/ţ/", "ţ",$string);
$string = preg_replace("/Ţ/", "Ţ",$string);
return $string;
}
echo "<html><body><form method=\"post\">";
echo "<textarea name=\"text\"></textarea>";
echo "<input type=\"submit\"/>";
echo "</form>";
if (isset($_POST['text']))
echo decode_htmlentities($_POST['text']);
echo "</body></html>";
?>
[/php]
Astfel, acest script imi afiseaza un cod html exact cum il scriu, dar diacrititcile romanesti mi le afiseaza normal, nu & # xxx;
Voie buna!
Before doing something perfect, do something perfectible!
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 14 vizitatori