Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Muotoilumerkinnät tekstissä

Sivun loppuun

t0ll0 [17.03.2008 20:35:36]

#

Tervehdys!

Heti kärkeen olen pahoillani kun en keksinyt asiaa paremmin kuvaavaa otsikkoa.

Olen yrittänyt keksiä keinoa miten juuri tälläinen lomake/mysql koodi saadaan toimintaan mihin juuri itsekkin kirjoitan.

Eli kun tekstikenttään kirjoittaa hakasulkeisiin määrätyn tekstin koodi käsittelee sen eri tavalla, kuten esimerkiksi phpbb foorumin quote toiminto.
Näyttäisi täällä putkassa olevan monenmonta vaihtoehtoa kursivointiin ja vaikka mihin, mutta tahtoisin itse oppia myös tekemään näitä.

hmm, en nähtävästi osannut kovin hyvin selvittää tilannettani, mutta onneksi putkalaiset eivät ole tyhmiä:)

Toivon pikaista vastausta.

TsaTsaTsaa [17.03.2008 20:38:35]

#

MySQL:ään tämä nyt ei varsinaisesti liity mitenkään. Eli kannattaa tietokantaan tallentaa teksti sellaisena kuin se on kirjoitettu ja sitten esim. PHP:lla sivua generoitaessa muuntaa tietyt tagit halutunlaisiksi. Ja PHP:n funktioista kannattaa tutustua ainakin preg_replace:en.

Antti Laaksonen [17.03.2008 20:43:35]

#

Yleensä hakasulkumerkintöjä (kutsutaan myös muotoilutageiksi) sisältävä teksti tallennetaan tietokantaan sellaisenaan, mutta juuri ennen kuin teksti tulostetaan sivulle käyttäjän nähtäville, hakasulut korvataan vastaavilla HTML-tageilla.

Yksinkertaisimmillaan koodi näyttää seuraavalta:

// muuttujaan $teksti haetaan sisältöä tietokannasta
$teksti = str_replace("[b]", "<b>", $teksti);
$teksti = str_replace("[/b]", "</b>", $teksti);
$teksti = str_replace("[i]", "<i>", $teksti);
$teksti = str_replace("[/i]", "</i>", $teksti);
// muuttuja $teksti tulostetaan sivulle

Eli tekstissä olevat hakasulkumerkinnät pitää muuttaa tavalla tai toisella sellaisiksi, että ne aiheuttavat halutun tuloksen HTML-sivuun. Yllä olevassa koodissa [b] ja [/b] muutetaan muotoon <b> ja </b>, samoin [i] ja [/i] muutetaan muotoon <i> ja </i>

t0ll0 [17.03.2008 20:48:02]

#

Loistavaa tämä selvittikin asian.
Kiitoksia paljon!

Merri [18.03.2008 02:25:14]

#

Yksi asia mikä kuitenkin on vielä otettava huomioon ovat avoimet tagit: jos ei tahdo rikkoa loppua sivua, niin pitää varmistaa että kullekin avaavalle tagille on myös olemassa sulkeva tagi. Lisäksi olisi tietysti hyvä, että tagit olisivat oikeassa avaamis- ja sulkemisjärjestyksessä.

Tämä tarkistus taas olisi hyvä tehdä siinä vaiheessa kun tekstiä tallennetaan tietokantaan.


Noin esimerkin vuoksi, tässä yksi rikkonainen esimerkki:

[b]bold[i]i[/b]talic[/i][u]underline

t0ll0 [18.03.2008 08:34:06]

#

Tuli vielä mieleen, että onko miten vaikeaa saada tuo hakemaan mysql taulukosta tietoja?

Esimerkiksi tämmöinen rivi [galleria] GALLERIAN ID [/galleria]
hakisi tuon gallerian id:n perusteella mysql taulusta kaikki tuohon tiettyyn galleriaan kuuluvat kuvat.

Kiitos taas etukäteen!

TsaTsaTsaa [18.03.2008 09:54:15]

#

Jotenkin näin luulisi onnistuvan:

<?php
$teksti = preg_replace_callback("/(\[galleria\])[0-9]+(\[\/galleria\])/is",
                                  "teegaltsu", $teksti);

function teegaltsu($matches)
{
  // Sisään tulee taulukollinen tavaraa ja ekassa alkiossa
  // on alkutagi, viimesessä lopputagi (välissä ID ilmeisesti numero kerrallaan)
  $maara = sizeof($matches);
  $id = "";
  if ($maara > 1)
  {
    for ($i = 2 ; $i < $maara-1 ; ++$i)
    {
      // Kerätään gallerian id
      $id .= $matches[$i];
    }

  // Muutetaan id stringistä intiksi,
  // sitten haetaan tietokannasta tavara id:n perusteella ja tulostellaan kuvat.

  }
}

?>

t0ll0 [18.03.2008 10:26:31]

#

Olen tässä pähkäillyt mutten millään meinaa saada tuota toimintaan.

Valittaa seuraavaa:
Warning: preg_replace_callback() [function.preg-replace-callback]: requires argument 2, 'teegaltsu', to be a valid callback

Mikä mahtaa olla vikana?

Blaze [18.03.2008 10:43:16]

#

teegaltsu-funktiosta pitää palauttaa (return) HTML-koodi, joka sen gallerian muodostaa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta