Tälläinen ongelma tuli vastaan...
Minulla seuraavanlaista PHP-koodia:
//..... echo "<input type=\"hidden\" id=\"kentta_".$i."\" value=\"".$result["sisalto"]."\" />"; //.....
Ja JavaScript-koodia, jossa on funktio(String) seuraavasti:
//..... funktio(document.getElementById("kentta_"+i).value) //.....
Ongelma tuli vastaan merkkien muunnoksessa. En kykene ajattelemaan niin pitkälle, miten tuo pitäisi tehdä esim. strtr ja/tai replace():lla? Olen yrittänyt kaikkea, ja tullut lopputulokseen, että molempiin (JS sekä PHP) pitää laittaa merkkien muunnos. En vain käsitä miten.
Miten on?
EDIT: Niin, ja tuo tietokannassa oleva 'sisalto'-sarakkeen solu sisältää "-merkkejä.
echo ... htmlspecialchars($result["sisalto"]) ...;
Mahdollisesti?
Ei tosta sun selityksestä ottanut selvää, että mitä pitää korvata, millä ja miksi.
Teetkö php:n puolella jotenkin näin:
<?php for ($i = 0; $i < $ylaraja; ++$i) { echo "<input type=\"hidden\" id=\"kentta_".$i."\" value=\"".$result["sisalto"]."\" />"; }
Tällöin oikea id-numero löytyy tietenkin valitsemalla oikealla numerolla oleva kentta.
Joka tapauksessa htmlspecialchars on tarpeellinen aina, kun tulostetaan HTML-koodin sekaan tekstiä. Sen kuuluu yleensä olla viimeinen asia, joka tekstille tehdään ennen tulostamista; sen jälkeen tekstiä ei pidä enää muokata.
Muut korvaukset – esimerkiksi a-kirjaimen korvaamisen tekstillä "kissa" – voi tehdä joko PHP:llä tai JS:llä mutta ei molemmilla: silloinhan PHP tuottaisi a-kirjaimesta tekstin "kissa" ja JS tekisi siitä tekstin "kisskissa".
JS:llä voi korvata merkkejä näin:
var teksti = document.plaaplaa.value; teksti = teksti.replace("a", "kissa", "g"); // "g" = global = kaikki a-kirjaimet teksti = teksti.replace("b", "kävel", "g"); teksti = teksti.replace("c", "ee", "g"); funktio(teksti);
Aihe on jo aika vanha, joten et voi enää vastata siihen.