Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Merkistöongelma

Sivun loppuun

punppis [24.10.2010 10:42:32]

#

Yritän tehdä php-skriptiä, joka hakee WoW Armorystä hahmon tietoja. Yritän saada siis osoitteesta http://eu.wowarmory.com/character-sheet.xml?r=Talnivarr&cn=Pumppaaja parsittua dataa. Tarkemmin riviltä 1542 (<div class="char-profile_name">) kohdat "Orc" ja "Warrior". Otan urlin sisällön talteen ja teen siitä dom documentin.

Kuitenkin, kun yritän parsia tuota divin sisältöä, niin noista välimerkeistä tulee jotain MYSTISIÄ TAIKAMERKKEJÄ, kun en saa millään toimimaan. Alkuperäisessä koodissa siis nuo kohdat on eroteltuna non-breaking spacella (&nbsp;) ja kun tulostan dom documentin avulla tuon divin sisällön, niin se tarjoaa "Level 80 Orc Warrior". Kun yritän explodettaa " "-merkillä, niin mitään ei tapahdu. Olen myös yrittänyt kaikki mahdolliset kombinaatiot non-breaking space-koodilla ja ei se vaan toimi. Ehkä se johtuu kellonajasta, ehkä olen tyhmä, tarvitsen apua! Millä ihmeellä saisin parsittua tuolta nuo kaksi viimeistä sanaa? Yritin jopa strpos-funktion avulla etsiä tuota "Orc" tai "Warrior" -sanaa, mutta eipä se löydä niitäkään...

Nyt apuja!

Macro [24.10.2010 11:34:11]

#

Explodeta &nbsp:lla.

Edit. Jos kirjoittaa pelkän &nbsp; niin tulee tyhjää.

temu92 [24.10.2010 12:27:41]

#

Eikös ton sivun pitäs olla XML:ää koko homma? Anyways, en suoranaisesti korjaa alkuperäistä ongelmaa vaan tässä Armory-parser koodi jonka itse joskus löysin jostain ja muokkasin tarpeisiin sopivaksi: http://pastebin.com/qg6BtBST

Eli koko homma räjäyttää XML-dokumentin taulukkoon sopivaksi. Kyseiset hakemasi tiedot pitäis saada taulukosta poimittua näin:

<?php
echo $parsed['characterinfo']['character']['race']." ".$parsed['characterinfo']['character']['class'];
?>

tuutti [24.10.2010 12:32:57]

#

http://elitistjerks.com/f15/t14035-how_get_xml_php_armory/ tuol kans lisää juttuu

punppis [24.10.2010 18:36:22]

#

Kiitos vastauksista. Sain homman toimimaan.

punppis [26.10.2010 16:49:47]

#

Pistetään tähän samaan topicciin, kun ilmestyi toinenkin merkistöongelma. Kun otan pääsivulleni tietokannasta phpbb3:n viimeisimpiä viestejä, niin niissä ei toimi skandit. phpBB:n käyttämä tietokanta näyttäisi olevan utf8_bin, kuten myös sivunikin merkistökoodaus on UTF-8.

http://rynnakkomestari.net/ tuolta voi käydä katsomassa, vasemmassa alakulmassa.

Kysely:

SELECT forum_id, topic_id, post_subject, post_id FROM phpbb_posts ORDER BY post_id DESC LIMIT 10

tuosta sitten vain echotaan tiedot, mitään muuttamatta.

-tossu- [26.10.2010 16:56:46]

#

Viestit näyttäisivät olevan tietokannassa ISO 8859-1 -koodauksella. Muuta ne UTF-8:ksi utf8_encode -funktiolla.

<?php
echo utf8_encode ($viesti);

Teuro [26.10.2010 17:05:27]

#

Tai sitten koko yhteys UTF-8 funktiolla mysql_set_charset('utf8', $connect);

Metabolix [26.10.2010 17:05:33]

#

Oikea ratkaisu olisi asettaa tietokantayhteyteen oikea merkistö (mieluiten funktiolla mysql_set_charset, tarvittaessa kyselyllä SET NAMES 'utf8'), jotta MySQL osaisi palauttaa tekstin valmiiksi oikein. Datan tyyppinä kannassa kuuluu tietenkin olla tällöin teksti eikä esimerkiksi binaaridata.

punppis [26.10.2010 17:10:06]

#

Noniin, nyt pelittää. Osaako joku sanoa, että miksi tuolla sivuilla ei näy Operalla kaikki kuvat ja IE8:llä näkyy joissain kuvissa kummallisuuksia. Sekä HTML, että CSS ovat validia. Chromella ja Firefoxilla toimii ongelmitta.

-tossu- [26.10.2010 17:27:31]

#

Kuvat näkyvät Operalla kun JavaScriptin ottaa pois päältä. Supersleight.js -tiedostossa oleva koodi muuttaa joidenkin kuvien src:n "x.gif":ksi.

punppis [26.10.2010 17:57:16]

#

Aivan. Unohtui lisätä tuohon supersleightiin että vain ie <= 6.

Merri [26.10.2010 18:03:58]

#

Metabolix: muun muassa phpBB3 ja MediaWiki käyttävät tietokannassa binääriä säilytysmuotona, koska se mahdollistaa koko Unicoden merkistöskaalan käyttämisen. MySQL rajoittaa merkkivalikoimaa omassa UTF-8 -tuessaan turhan paljon, merkki saa olla maksimissaan 3 tavua (alle U+10000). Omat nykyiset MediaWiki-asennukseni käyttävät binääritauluja juuri tämän ongelman takia: löytyy tarvetta noille erikoisemmillekin merkeille.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta