Miten tuon saisi purettua muuttujiin? eli:
[lainaa lahettaja=Tuomas]viesti[lainaa]
$lahettaja=tuomas;
ym...
Tuosta saattaisi olla jotain hyötyä:
http://php.ohjelmointiputka.net/?parse_str
Haetko kenties tällaista koodia?
<?php //lainaustagin aloitus $talku = "[lainaa lahettaja="; //lainaustagin lopetus $tloppu = "[/lainaa]"; //käsiteltävä teksti $teksti = "Tässä on ensin jotain muuta tekstiä. [lainaa lahettaja=Antti]Näin tämä toimii![/lainaa]"; //lähettäjänimen aloituskohta $aloitus = strpos($teksti, $talku); //lähettäjänimen lopetuskohta $lopetus = strpos($teksti, "]", $lopetus); //lähettäjänimi $lahettaja = substr($teksti, $aloitus + strlen($talku), $lopetus - $aloitus - strlen($talku)); //viestin aloituskohta $aloitus = $lopetus + 1; //viestin lopetuskohta $lopetus = strpos($teksti, $tloppu, $aloitus); //viesti $viesti = substr($teksti, $aloitus, $lopetus - $aloitus); //tulostetaan lainattu teksti ja sen lähettäjä echo "Lainattu teksti on <i>$viesti</i>, ja sen alkuperäinen lähettäjä on <i>$lahettaja</i>."; ?>
Lisää tietoa:
http://php.ohjelmointiputka.net/?strlen
http://php.ohjelmointiputka.net/?strpos
http://php.ohjelmointiputka.net/?substr
juuri tuollaista! kiitos!
joo elikkä toi ei toiminu, kun viestejä oli enemmän...
erroria pukkas.
vähän tutkiskeltuani väsäsin tämmösen:
$viesti = preg_replace("'\[lainaa lahettaja=(.+?)\](.*?)\[/lainaa\]'", " <center> <table align=center border=0 cellpadding=2 cellspacing=0 width=500 height=30> <tr> <td valign=top align=left width=100% bgcolor=whitesmoke style='border: 0px solid gray'> <strong>Lainaa:</strong> $1 <td> </tr> <tr> <td valign=top align=center width=100% bgcolor=white style='border: 1px solid gray'> <font color=gray>$2</font> <td> </tr> </table> </center>", $viesti);
mutta mites ton sais toimiin niin, että kun olis vaikka noin kaks lainausta päällekkäin, se osais laittaa ne oikein??
tätä tarkotan:
[lainaa lahettaja=Tuomas] [lainaa lahettaja=Tuomas] onko se ny niin hauskaa?! [/lainaa] Todellaki! [/lainaa]
Itse olen käyttänyt seuraavanlaista koodia, jonka suoritusnopeudesta voi sitten olla montaa eri mieltä.
$quoted_re = "/(<br \/>)*\[quote=(.*?)\](<br \/>)*(.*?)(<br \/>)*\[\/quote\](<br \/>)*/is"; $quoted_co = "<div class=\"quote_box\">kirjoitti \\2:</div><div class=\"quote_text\">\\4</div>"; while( preg_match($quoted_re, $input) ) $input = preg_replace($quoted_re, $quoted_co, $input);
mitenköhän on täällä ohjelmointiputkassa tuo suoritettu?
Tällä keskustelualueella tilanne on helpompi, koska lainaustagin yhteydessä ei ole kirjoittajan nimeä. Siksi HTML-muotoon muuttaminen onnistuu suoraan str_replace-funktiolla.
joo taidan mäkin suosiolla siirtyä tohon str_replace:seen.
Tarttis vielä jonkullaisen javascriptin, joka tarkistais, löytyykö [lainaa]:lle aina pari [/lainaa].
Iskee nimittäin aika pahasti sivun taulukkorakenteen rikki, jos jompikumpi puuttuu.
voi siihen käyttää php:täki, lasket vaa muuttujiin molempien tagien määrän ja vertailet.
:o te nerot.
lainaus:
:o te nerot.
äläs nyt XD
Aihe on jo aika vanha, joten et voi enää vastata siihen.