Diacriticele si htmlentities('...')

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
dducu
PHPRomania Supporter
Mesaje: 16
Membru din: Mie Noi 17, 2004 10:55 am
Localitate: Iasi
Contact:

Diacriticele si htmlentities('...')

Mesajde dducu » Vin Noi 19, 2004 9:45 am

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!

Avatar utilizator
PCPbSlack
Average Member
Mesaje: 143
Membru din: Dum Noi 23, 2003 1:28 am
Localitate: Ploiesti
Contact:

Mesajde PCPbSlack » Vin Noi 19, 2004 9:50 am

foloseste ceva de genul stripslashes(htmlspecialchars($_POST['variabila'])), mie mi-a rezolvat problema cu " ' in tagurile input.

Avatar utilizator
dducu
PHPRomania Supporter
Mesaje: 16
Membru din: Mie Noi 17, 2004 10:55 am
Localitate: Iasi
Contact:

Mesajde dducu » Vin Noi 19, 2004 10:06 am

Tocmai am incercat, dar se pare ca tot nu merge... :? :oops: :x
Before doing something perfect, do something perfectible!

Avatar utilizator
PCPbSlack
Average Member
Mesaje: 143
Membru din: Dum Noi 23, 2003 1:28 am
Localitate: Ploiesti
Contact:

Mesajde PCPbSlack » Vin Noi 19, 2004 10:31 am

Daca folosesti un <textarea> pentru a pune tag-uri HTML atunci nu cred ca vei mai avea nevoie de htmlentities() si nici de ce am zis mai devreme.

Avatar utilizator
dducu
PHPRomania Supporter
Mesaje: 16
Membru din: Mie Noi 17, 2004 10:55 am
Localitate: Iasi
Contact:

Diacriticele si htmlentities('...')

Mesajde dducu » Vin Noi 19, 2004 1:04 pm

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;..." .
Before doing something perfect, do something perfectible!

Avatar utilizator
PCPbSlack
Average Member
Mesaje: 143
Membru din: Dum Noi 23, 2003 1:28 am
Localitate: Ploiesti
Contact:

Mesajde PCPbSlack » Vin Noi 19, 2004 1:35 pm

Pai de ce te chinui atunci cu htmlentities?

Pune in pagina intre tag-urile <head> </head> linia asta:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">

si iti va afisa ăîşţâ fara nici o problema.

Avatar utilizator
arond
Senior Member
Mesaje: 580
Membru din: Joi Mar 11, 2004 2:00 am
Localitate: 127.0.0.1
Contact:

Mesajde arond » Vin Noi 19, 2004 2:10 pm

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.
People ask for criticism, but they only want praise.
W. Somerset Maugham (1874 - 1965).

http://www.arond-design.ro

Avatar utilizator
PCPbSlack
Average Member
Mesaje: 143
Membru din: Dum Noi 23, 2003 1:28 am
Localitate: Ploiesti
Contact:

Mesajde PCPbSlack » Vin Noi 19, 2004 4:01 pm


Avatar utilizator
dducu
PHPRomania Supporter
Mesaje: 16
Membru din: Mie Noi 17, 2004 10:55 am
Localitate: Iasi
Contact:

Mesajde dducu » Vin Noi 19, 2004 5:16 pm

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("/&#259;/", "ă",$string);
$string = preg_replace("/&#258;/", "Ă",$string);
$string = preg_replace("/&#351;/", "ş",$string);
$string = preg_replace("/&#350;/", "Ş",$string);
$string = preg_replace("/&#355;/", "ţ",$string);
$string = preg_replace("/&#354;/", "Ţ",$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!


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 19 vizitatori