Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP + JavaScript ja merkkien korvaus

Puple [12.10.2012 16:53:41]

#

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ä.

Macro [12.10.2012 18:56:06]

#

echo ... htmlspecialchars($result["sisalto"]) ...;

Mahdollisesti?

Ei tosta sun selityksestä ottanut selvää, että mitä pitää korvata, millä ja miksi.

Teuro [12.10.2012 19:24:27]

#

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.

Metabolix [12.10.2012 19:29:55]

#

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);

Vastaus

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

Tietoa sivustosta