Kezdőoldal » Számítástechnika » Programozás » HTML/PHP probléma, "ő" és "ű"...

HTML/PHP probléma, "ő" és "ű" megjelenítése?

Figyelt kérdés

egy textarea-ba beírt szövegben technikai okokból ki kellett cseréltem php-val néhány karaktert, íme a kód:


$eredeti = array ( "&" , "\"" , "<" , ">" , "\r\n" );

$csere = array ( "&" , """ , "<" , ">" , "<br>" );

$leiras = str_replace($eredeti, $csere, $_POST['leiras']);


a következővel szembesültem: az ő, ű, Ő, Ű karakterek helyett a unicode-kódjukat kaptam vissza - odáig megvan, hogy jelen esetben ez a bűnös: "& => &", azonban nem ez a probléma valódi oka, hanem, hogy a mezőbe beírt "ő" pont úgy tárolódik, mintha azt írnám be, hogy "ő"... legalábbis én így vettem észre


miként tudnám ezt orvosolni?

("ő" átalakítása ő-vé nem opció, mert akkor is átalakítja, ha ez volt eleve beírva)


2015. júl. 25. 15:03
 1/5 A kérdező kommentje:
bocsi, az utf-kódokat átalakította a gyakori... javítom:D
2015. júl. 25. 15:04
 2/5 A kérdező kommentje:

egy textarea-ba beírt szövegben technikai okokból ki kellett cseréltem php-val néhány karaktert, íme a kód:


$eredeti = array ( "&" , "\"" , "<" , ">" , "\r\n" );

$csere = array ( "&amp;" , "&quot;" , "&lt;" , "&gt;" , "<br>" );

$leiras = str_replace($eredeti, $csere, $_POST['leiras']);


a következővel szembesültem: az ő, ű, Ő, Ű karakterek helyett a unicode-kódjukat kaptam vissza - odáig megvan, hogy jelen esetben ez a bűnös: "& => &amp;", azonban nem ez a probléma valódi oka, hanem, hogy a mezőbe beírt "ő" pont úgy tárolódik, mintha azt írnám be, hogy "&#337;"... legalábbis én így vettem észre


miként tudnám ezt orvosolni?

("&#337;" átalakítása "ő"-vé nem opció, mert akkor is átalakítja, ha ez volt eleve beírva)

2015. júl. 25. 15:09
 3/5 A kérdező kommentje:
*unicode-kódokat, de mind1:D
2015. júl. 25. 15:10
 4/5 Drone007 ***** válasza:

Úgy érzem, hogy itt a környezeti rendszer a hibás. Az utf8 ill. unicode karakterek használatához elengedhetetlen, hogy mindent utf8 kódolással kezelj:

1. a weboldalt magát (meta, ill php charset beállítás)

2. a weboldal szövegfájljai (php, html, js) utf8 kódolással byte order mark nélkül (BOM nélkül) legyenek mentve.

3. a tároló adatbázis, valamint a szöveges mezők is utf8 kódolásúak legyenek (utf8_unicode_ci vagy utf8_hungarian_ci vagy utf8_general_ci...)

4. adatbázis híváskor tudatosítani az sql kezelővel az utf8 használatot ("SET CHARACTER SET 'utf8'" és "SET NAMES 'utf8'")


Emellett egy szebb megoldást érdemes alkalmazni a gyanús és kizárt karakterek cseréjére regex-szel, a preg_replace vagy preg-replace_callback függvénnyel. Példakódok a neten ezrével.


Sok sikert!

2015. júl. 25. 19:12
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

köszi

sikerült megoldani


már korábban is próbálkoztam, de nem voltam elég figyelmes, és nem átalakítottam a fájlokat utf8 kódolásúra, csak beállítottam, hogy a notepad++ eszerint olvassa be (aztán nem értettem, hogy miért írta át az ékezetes karaktereket)

2015. aug. 2. 20:51

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!