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.
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.
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.
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>
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; ?>
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.