Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: lainaus-juttu

pistemies [14.02.2005 17:28:39]

#

Kyseessä on foorumin lainaa-linkin lisäsäätö.

Kyseessä on ongelma, jos lainataan tekstiä, jota on jo lainattu kerran.

Lainausteksti on minulla seuraava:

 [quote=tunnusX]
   Tekstiä
  [/quote]

En ole saanut täysin poimittua tuota tekstiä, joka on lainaukseen välissä, omaan $sisalto-muuttujaan. Pitäisi ilmeisesti jollakin tunnistaa tuo tunnusX, mitä siinä lukee, jotta saisi tuon sisällön täysin muuttujaan.
Ratkaistava pulma tulee tässä:

 [quote=tunnusX]
  [quote=tunnusZ]
    Tekstiä
   [/quote]
 [/quote]

Olisi kiva saada molemmat quotet muotoiltua taulukkoon.

exAtuu [14.02.2005 18:09:21]

#

En ymmärrä täysin, mikä tässä on vialla. Jos muokkaat [ quote=tunnusX ] - merkinnän tämmöiseksi:

<div>tunnusX sanoi:<br /><br />

ja [ /quote ]:n taas divin lopetustagiksi, ei lainaamisessa pitäisi pukata mikään.

pistemies [14.02.2005 18:35:58]

#

Tässä bugaa siis tuo, että lainus sisältää tuon lainausmerkkijonon. Nykyinen muotoilu-koodi on tämmöinen:

   $selaa = preg_replace("/\[quote=(.*?)\]([\w\W]+)\[\/quote\]/i", "<i><font size=\"1\">$1 kirjoitti:<hr></i></font><table width=\"600\" border=\"1\" bgcolor=\"white\" bordercolor=\"brown\"><tr><td>$2</td></tr></table><hr>", $selaa);

Se muuttaa vain ensimmäisen quote-lauseen, ei toista.

exAtuu [14.02.2005 18:51:06]

#

En regexpiä kovin hyvin hallitse, mutta sanon, että ota tablet pois tuosta, kun aivan turhia ovat. laita div tilalle. itse muokkaisin koodin [ quote=tunnusX ]joopajoo[ /quote ] tämmöiseksi:

<span style="margin-left: 20px;">tunnusX kirjoitti:</span>
<div style="margin-left: 20px;">joopajoo</div>

Antti Laaksonen [14.02.2005 20:17:41]

#

Jos haluat välttämättä muuttaa kokonaisen lainauksen kerrallaan (etkä erikseen aloitusta ja lopetusta, mikä toimii suoraan), korvauksia pitää sisäkkäisten lainausten takia jatkaa, kunnes korvattavaa ei enää ole. Tämä onnistuu silmukan ja preg_match-funktion avulla. Tässä tulee esimerkki:

<?php

   $teksti = "
 [quote=tunnusX]
  [quote=tunnusZ]
    Tekstiä
   [/quote]
 [/quote]";

   $rakenne = "/\[quote=(.*?)\]([\w\W]+)\[\/quote\]/i";

   $muutos = "<i>\\1 kirjoitti:</i><hr>\\2<hr>";

   while (preg_match($rakenne, $teksti)) {
      $teksti = preg_replace($rakenne, $muutos, $teksti);
   }

   echo $teksti;

?>

pistemies [15.02.2005 10:14:35]

#

Paljon kiitoksia Antille! Mietin jo, että poistanko kokonaan tuon preg_replacen ja laitan kaikki css-tyyllä ja str_replacella. Sain tämän nyt pelaamaan hyvin ja sovelsin tätä samaa myös code-muotoiluun. Nyt saa tehtyä viestiin useamman code-muotoilun, alkuperäisellä sai vain yhden.

Muutin lisäksi noi tablet <div class="lainaus"> tyyliin.

Olga [15.02.2005 19:12:07]

#

Ja jos nyt ihan oikein mentäisiin, niin lainauksessa tulisi käyttää blockquote-elementtiä. Ja on hyvä muistaa, että blockquoten tulee sisältää lohkotason elementti, eli esimerkiksi p. Rivitason lainauksiin sopii taasen q-elementti.

Vastaus

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

Tietoa sivustosta