TheClown Skrevet 27. juli 2007 Del Skrevet 27. juli 2007 (endret) Heisann og håsann. Jada jeg har søkt før jeg lagde denne tråden, men jeg fant ikke noe som hjelpe meg... Vel, jeg har lagd en funksjon som henter frem innholdet i posterfra phpBB2-forum. Disse postene er korte og inneholder bare en type BBCODE som jeg trenger hjelp til å gjøre om til html kode slik at den kan vises i potalen min. I BBCODE ser den slik ut: [url=www.her-kommer-urlshitten-opp.com]her kommer teksten opp[/url] Hvordan kan jeg gjøre om dette slik at det ser ut som HTML kode slik: <a href=www.her-kommer-urlshitten-opp.com>her kommer teksten opp</a> Innholdet blir hentet ut gjennom en loop, så jeg er litt usikker på hvordan man skal få gjort dette. Slik ser koden hvor databaseinnholdet kommer: echo " <table width='100%' border='1'> <tr> <td>"; echo $row[post_text]; echo " </td> </tr> </table>"; Endret 28. juli 2007 av TheClown Lenke til kommentar
Gjest Slettet+142 Skrevet 27. juli 2007 Del Skrevet 27. juli 2007 Jeg fant svaret med mitt første søk jeg Søk: bbkode Resultat #1 Aha, det var feilen ja Takk Ernie (Føler jeg lærer mye av deg for tiden ) Legger ut hele funksjonen jeg, i tilfelle noen trenger den PHP <?php function bbkoder ($str) { $bbkoder = array( '/(.*?)/is', '/(.*?)/is', '/(.*?)/is', '/[p](.*?)[/p]/is', '//is', '/(.*?)/is', '/(.*?)/is', '//is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } ?> = » [p*]Avsnitt[/p*] » [h3*]Overskrift[/h3*] » [b*]Tjukk tekst[/b*] » [i*]Skrå tekst[/i*] » [u*]Underlinje[/u*] » [url*]adresse[/url*] » navn[/url*] » (Bilde) Uten stjerne før ] btw, forumet omgjør alt til "ikkeBB-koder" om jeg ikke legger ved stjernen Brukes slik: PHP <?php function bbkoder ($str) { $bbkoder = array( '/(.*?)/is', '/(.*?)/is', '/(.*?)/is', '/[p](.*?)[/p]/is', '//is', '/(.*?)/is', '/(.*?)/is', '//is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } ?> evnt. med mysql ol. menmen.. rel="external" og class="utskrift" er jo ting som jeg har lagt til for eget behov.. Må nesten tilpasses den enkelte side 7047217[/snapback] Lenke til kommentar
Runar0 Skrevet 27. juli 2007 Del Skrevet 27. juli 2007 Vist du har phpbb installert på samme server (noe eg vil tro du har) så kan du bruke bbcode parseren som ligg der. Lenke til kommentar
TheClown Skrevet 27. juli 2007 Forfatter Del Skrevet 27. juli 2007 Fatal error: Cannot redeclare bbkoder() (previously declared in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php:50) in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 50 Kan du fortelle meg om jeg skal gjøre noen strings eller noe om i scriptet du posta? Prøvd litt forskjellige med fikk ikke noe til. Lenke til kommentar
Gjest Slettet+142 Skrevet 27. juli 2007 Del Skrevet 27. juli 2007 (endret) Høh? PHP <?php function bbkoder ($str) { $bbkoder = array( '/(.*?)/is', '/(.*?)/is', '/(.*?)/is', '/[p](.*?)[/p]/is', '//is', '/(.*?)/is', '/(.*?)/is', '//is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } $streng_fra_db = "Fet tekstDette er en link"; echo bbkoder($streng_fra_db); ?> Jeg vil tro at feilmeldingen du får, kommer av at du allerede har en funksjon som kalles bbkoder i koden din. Endret 27. juli 2007 av Slettet+142 Lenke til kommentar
TheClown Skrevet 27. juli 2007 Forfatter Del Skrevet 27. juli 2007 Warning: preg_replace() [function.preg-replace]: Unknown modifier 'b' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 Warning: preg_replace() [function.preg-replace]: Unknown modifier ']' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 Warning: preg_replace() [function.preg-replace]: Unknown modifier 'p' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 Warning: preg_replace() [function.preg-replace]: Unknown modifier 'r' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 Warning: preg_replace() [function.preg-replace]: Unknown modifier 'r' in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 74 [urlwwwrnerkeundonet]RnerkeUndonet[/url]: V har lat en del nye funksjoner o tn so er verdt å skjekke ut, les er [urlhttp://rnerkeundonet/foru/vewtopcphpt48]her[/url] Lenke til kommentar
Runar0 Skrevet 28. juli 2007 Del Skrevet 28. juli 2007 (endret) <?php function bbkoder ($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[p\](.*?)\[\/p\]/is', '/\[img\](.*?)\[\/img\]/is', '/\[ur\](.*?)\[\/url\]/is', '/\[url=(.*?)\](.*?)\[\/url\]/is', '/\[img=(.*?)\]/is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } $streng_fra_db = "[b]Fet tekst[/b][url=http://adresse.no]Dette er en link[/url]"; echo bbkoder($streng_fra_db); ?> ] Sånn, det er viktig å hugse å escape [ og ]. http:// matcher bokstaven u, r eller l mens \[url\] matcher teksten . Det andre problemet var at avslutter patternet og dermed fikk du feilmeldinger, dette skal se slik ut: \[\/url\] Runar Endret 28. juli 2007 av Runar0 Lenke til kommentar
Gjest Slettet+142 Skrevet 28. juli 2007 Del Skrevet 28. juli 2007 Kremt, jeg mente å tro at det emnet var løst jeg Men da du escapet regex-ene, Runar0, ser det ut som du har vært litt for kjapp på url.. hvor det ble seende slik ut: '/\[ur\](.*?)\[\/url\]/is', Rettet Kode: <?php function bbkoder ($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[p\](.*?)\[\/p\]/is', '/\[img\](.*?)\[\/img\]/is', '/\[url\](.*?)\[\/url\]/is', '/\[url=(.*?)\](.*?)\[\/url\]/is', '/\[img=(.*?)\]/is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } $streng_fra_db = "[b]Fet tekst[/b][url=http://adresse.no]Dette er en link[/url]"; echo bbkoder($streng_fra_db); ?> Lenke til kommentar
TheClown Skrevet 28. juli 2007 Forfatter Del Skrevet 28. juli 2007 Joda, første loop funker utmerket den. Men i loop nr 2 får jeg denne meldingen: Fatal error: Cannot redeclare bbkoder() (previously declared in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php:50) in /mounted-storage/home20a/sub001/sc20063-GJYD/ru.net/portal/pinc/idx.php on line 50 50 function bbkoder ($str) { 51 52 $bbkoder = array( $result=mysql_query($sql); while ($row=mysql_fetch_assoc($result)) { En slik loop bruker jeg. Lenke til kommentar
Runar0 Skrevet 28. juli 2007 Del Skrevet 28. juli 2007 Du må ikkje legge funksjonen to ganger i koden din, da får du den feilmeldingen. Lenke til kommentar
Gjest Slettet+142 Skrevet 28. juli 2007 Del Skrevet 28. juli 2007 Tar jeg feil hvis jeg sier at du har lagt koden som ligger over inn innenfor while-klemmene? Kan vi få se litt av koden i og rundt den while-løkken din, så kan vi se om vi finner en løsning? Lenke til kommentar
TheClown Skrevet 28. juli 2007 Forfatter Del Skrevet 28. juli 2007 Det er helt riktig. Her er hele fila borsett fra $connect infoen mysql_select_db("RingerikeUngdom", $connection); $sql= "SELECT t1.topic_poster, t1.topic_replies, t1.topic_title, t1.topic_time, t1.forum_id, t1.topic_id, t2.username, t3.post_text, t3.post_id, t3.post_subject FROM phpbb_topics t1, phpbb_users t2, phpbb_posts_text t3 WHERE t1.topic_poster = t2.user_id AND t1.forum_id = 1 AND t1.topic_title = t3.post_subject ORDER BY t1.topic_time DESC LIMIT 10"; // [topic_poster] = Brukeren som har skrevet tråden // [username] = Brukeren som har skrevet tråden // [topic_replies] = Antall svar i tråden // [topic_title] = Titelen på tråden // [post_subject] = Titelen på tråden // [topic_time] = dato/tid tråden ble skrevet // [forum_id] = Hvilke ID forumet tråden ligger i // [topic_id] = Hvilke ID tråden har // [post_text] = Selve teksten i 1. post i tråden // [post_id] = Hvilke ID selve posten har $result=mysql_query($sql); while ($row=mysql_fetch_assoc($result)) { echo " <table width='100%' border='1'> <tr> <td>"; echo "<a href='http://ringerikeungdom.net/forum/viewtopic.php?t=" . $row[topic_id] . "' target='_blank' >" . $row[topic_title] . "</a>"; echo " </td> </tr> </table>"; //Slutt på Tittelbox echo " <table width='100%' border='1'> <tr> <td>"; function bbkoder ($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[p\](.*?)\[\/p\]/is', '/\[img\](.*?)\[\/img\]/is', '/\[ur\](.*?)\[\/url\]/is', '/\[url=(.*?)\](.*?)\[\/url\]/is', '/\[img=(.*?)\]/is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } echo bbkoder($row[post_text]); echo " </td> </tr> </table>"; //Slutt på Mainbox echo " <table width='100%' border='1'> <tr> <td>"; echo "<b>Forfatter:</b> <a href='http://ringerikeungdom.net/forum/profile.php?mode=viewprofile&u=" . $row[topic_poster] . "' target='_blank' >" . $row[username] . "</a>"; echo " </td> <td>"; echo "<b>Publisert:</b> $row[topic_time]"; echo " </td> <td>"; echo "<b>Kommentarer:</b> $row[topic_replies]"; echo " </td> <td>"; echo "<a href='http://ringerikeungdom.net/forum/viewtopic.php?t=" . $row[topic_id] . "' target='_blank' >Les mer</a>"; echo " </td> </tr> </table> <br />"; //Slutt på Infobox } mysql_free_result($result); echo "<a href='http://ringerikeungdom.net/forum/viewforum.php?f=1'>« Eldre nyheter</a>"; ?> Lenke til kommentar
Runar0 Skrevet 28. juli 2007 Del Skrevet 28. juli 2007 Du må legge funksjonen på utsida av while løkka slik som dette: Klikk for å se/fjerne innholdet nedenfor function bbkoder ($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[p\](.*?)\[\/p\]/is', '/\[img\](.*?)\[\/img\]/is', '/\[ur\](.*?)\[\/url\]/is', '/\[url=(.*?)\](.*?)\[\/url\]/is', '/\[img=(.*?)\]/is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } mysql_select_db("RingerikeUngdom", $connection); $sql= "SELECT t1.topic_poster, t1.topic_replies, t1.topic_title, t1.topic_time, t1.forum_id, t1.topic_id, t2.username, t3.post_text, t3.post_id, t3.post_subject FROM phpbb_topics t1, phpbb_users t2, phpbb_posts_text t3 WHERE t1.topic_poster = t2.user_id AND t1.forum_id = 1 AND t1.topic_title = t3.post_subject ORDER BY t1.topic_time DESC LIMIT 10"; // [topic_poster] = Brukeren som har skrevet tråden // [username] = Brukeren som har skrevet tråden // [topic_replies] = Antall svar i tråden // [topic_title] = Titelen på tråden // [post_subject] = Titelen på tråden // [topic_time] = dato/tid tråden ble skrevet // [forum_id] = Hvilke ID forumet tråden ligger i // [topic_id] = Hvilke ID tråden har // [post_text] = Selve teksten i 1. post i tråden // [post_id] = Hvilke ID selve posten har $result=mysql_query($sql); while ($row=mysql_fetch_assoc($result)) { echo " <table width='100%' border='1'> <tr> <td>"; echo "<a href='http://ringerikeungdom.net/forum/viewtopic.php?t=" . $row[topic_id] . "' target='_blank' >" . $row[topic_title] . "</a>"; echo " </td> </tr> </table>"; //Slutt på Tittelbox echo " <table width='100%' border='1'> <tr> <td>"; echo bbkoder($row[post_text]); echo " </td> </tr> </table>"; //Slutt på Mainbox echo " <table width='100%' border='1'> <tr> <td>"; echo "<b>Forfatter:</b> <a href='http://ringerikeungdom.net/forum/profile.php?mode=viewprofile&u=" . $row[topic_poster] . "' target='_blank' >" . $row[username] . "</a>"; echo " </td> <td>"; echo "<b>Publisert:</b> $row[topic_time]"; echo " </td> <td>"; echo "<b>Kommentarer:</b> $row[topic_replies]"; echo " </td> <td>"; echo "<a href='http://ringerikeungdom.net/forum/viewtopic.php?t=" . $row[topic_id] . "' target='_blank' >Les mer</a>"; echo " </td> </tr> </table> <br />"; //Slutt på Infobox } mysql_free_result($result); echo "<a href='http://ringerikeungdom.net/forum/viewforum.php?f=1'>« Eldre nyheter</a>"; ?> Lenke til kommentar
TheClown Skrevet 28. juli 2007 Forfatter Del Skrevet 28. juli 2007 Å ja daså Takk for hjelp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå