Gå til innhold

[HJELP!] Info fra loop før loopen


Anbefalte innlegg

Videoannonse
Annonse

Har ikkje vert borti phpbb3 før faktisk, men i phpbb2 så vart dette 'tilfeldige' nummeret lagra i bbcode_uid i samme tabell som posten. Som sagt så kan det vere dette har endra men vist det er slik forsatt så du fikse dette i SQL'en:

 

SELECT REPLACE( `post_text` , CONCAT( ":", `bbcode_uid` , "]" ) , "]" ) AS `post` FROM phpbb_posts

Endret av Runar0
Lenke til kommentar

Heisann :) Joda, det kan sikkert funke det. Men jeg tenkte å gjøre det så enkelt som mulig.

 

// Bilde

'[img:[uansett hvilke tall/bokstav som er her blir den gjort om til html]]' => '<img src="',

 

Er også mulig å legge til en [img:[KODE_FOR_HVILKE_SOM_HELST_TALL/BOKSTAV_HER] ==

 

Så slipper jeg å gjøre om på den orginale replace-koden

Endret av TheClown
Lenke til kommentar

Da må du nok bruke preg_replace i steden for str_replace.

 

Eksempel:

$bbcodes = array(
  # Images
  '/\[img:[a-zA-Z0-9]+\](.*?)\[\/img:\\1\]/is' => '<img src="\\1" />',

  # Bold text
  '/\[b:[a-zA-Z0-9]+\](.*?)\[\/b:\\1\]/is'	   => '<strong>\\1</strong>',
);

function bbdecode($text) {
  global $bbcodes;
  return preg_replace(array_keys($bbcodes), array_values($bbcodes), $text);
}

* Utestet

 

Vist du ikkje har vert borti Regular Expressions før så vil eg anbefale deg å lese litt om det etter som at det nok er ein generelt bedre løsning på BBCodes.

 

Edit: Var en feil i koden

Endret av Runar0
Lenke til kommentar
Er det ikke BBCodes i Phpbb3 fra for av da?

 

http://www.phpbb3portal.com/faq.php?mode=bbcode

Can I add my own tags?

If you are an administrator on this board and have the proper permissions, you can add further BBCodes through the Custom BBCodes section.

Høres jo ut som dette er noe som gjøres i adminpanelet eller noe sånt.

 

@ Trådstarter:

Å kludre til PHPBB3 med elendig kode er noe man helst vil unngå, sjekk og dobbeltsjekk hvordan PHPBB3 har lagt opp til at man skal legge til egne koder, du.

Lenke til kommentar

Hei igjen. Jeg har prøvd litt frem og tilbake, men kommer ingen vei. Hvorfor funker det ikke?

 

Coden:

 

//
// Removes the phpBB security BB-ID
$id_codes = array(
   // Bold
'[b:^[a-zA-Z0-9]$]' => '[b]',
'[/b:^[a-zA-Z0-9]$]' => '[/b]',
// Images
'[img:^[a-zA-Z0-9]$]' => '[img]',
'[/img:^[a-zA-Z0-9]$]' => '[/img]',
// Table (/1)
'[table:^[a-zA-Z0-9]$]' => '[table]',
'[/table:^[a-zA-Z0-9]$]' => '[/table]',
// Table (/2)
'[tr:^[a-zA-Z0-9]$]' => '[tr]',
'[/tr:^[a-zA-Z0-9]$]' => '[/tr]',
// Table (/3)
'[td:^[a-zA-Z0-9]$]' => '[td]',
'[/td:^[a-zA-Z0-9]$]'  => '[/td]'
);

function convert_idcodes( $tt ) 
{ 
 return preg_replace(array_keys($id_codes), array_values($id_codes), $tt);

}

//
// BB-Koder til HTML
$bb_codes = array(
// Bold
'[b]' => '<b>',
'[/b]' => '</b>',
// Image
'[img]' => '<img src="',
'[/img]' => '" />',
// Table (/1)
'[table]' => '<table>',
'[/table]' => '</table>',
// Table (/2)
'[tr]' => '<tr>',
'[/tr]' => '</tr>',
// Table (/3)
'[td]' => '<td>',
'[/td]' => '</td>'
   # note the missing comma after the last line above
);

function convert_bbcodes( $t ) 
{ 
 $search = array_keys( $GLOBALS['bb_codes'] );
 $t = str_replace( $search, $GLOBALS['bb_codes'], $t );
 return $t;
}

 

og selve spørringa:

$post_text = convert_idcodes($row['post_text']);

echo convert_bbcodes($post_text);

Lenke til kommentar

For det første så har du feil i regex kodene:

  • Du må starte og slutte ein regex med eit gitt tegn, for eksempel / eller #. Eks /din regex her/
  • ^ markerer linje start mens $ markerer slutt, det har ingen funksjon i dine uttrykk.

Det er heller ingen grunn til å først fjerne kodene med regex og så dekode med str_replace når du kan gjøre begge deler i regex med en gang. I regex kan du og forsikre deg om at end tagen finst slik at du slipper noe slikt:

 

tekst ...

dekodet til

<strong>tekst ...

og dermed er resten av sida di i feit skrift.

Lenke til kommentar

Nytt problem :(

 

Ok, nå fikk jeg BB-koder over til HTML til å funke. Men jeg fikk et nytt problem.

 

Slik ser forresten scriptet ut

 

//
// Delete BB-code ID and change them into html
$bbcodes = array(
// Bold
'/\[b:[a-zA-Z0-9]+\]/' => '<b>',
'/\[\/b:[a-zA-Z0-9]+\]/' => '</b>',
   // Images #1
'/\[img]/' => "<img src=",
'/\[\/img]/' => "' />",

 // Images #2
'/\[fimg:[a-zA-Z0-9]+\]/' => "<a href='http://www.clanserver.no/forum/viewtopic.php?t=$row[topic_id]' ><img src='",
'/\[\/fimg:[a-zA-Z0-9]+\]/' => "' /></a>",

// Table #1
'/\[table:[a-zA-Z0-9]+\]/' => '<table>',
'/\[\/table:[a-zA-Z0-9]+\]/' => '</table>',

// Table #2
'/\[tr:[a-zA-Z0-9]+\]/' => '<tr>',
'/\[\/tr:[a-zA-Z0-9]+\]/' => '</tr>',

// Table #3
'/\[td:[a-zA-Z0-9]+\]/' => '<td>',
'/\[\/td:[a-zA-Z0-9]+\]/' => '</td>'
);

 

 

Problemet er det at:

<a href='http://www.clanserver.no/forum/viewtopic.php?t=$row[topic_id]' >

 

 

Hentes ut fra en spørring som blir kjørt seinere i scriptet. Hvordan kan jeg få denne verdien til å være riktig?

 

Tinga i helhet:

 

// Delete BB-code ID and change them into html
$bbcodes = array(
// Bold
'/\[b:[a-zA-Z0-9]+\]/' => '<b>',
'/\[\/b:[a-zA-Z0-9]+\]/' => '</b>',
   // Images #1
'/\[img]/' => "<img src=",
'/\[\/img]/' => "' />",

 // Images #2
'/\[fimg:[a-zA-Z0-9]+\]/' => "<a href='http://www.clanserver.no/forum/viewtopic.php?t=$row[topic_id]' ><img src='",
'/\[\/fimg:[a-zA-Z0-9]+\]/' => "' /></a>",

// Table #1
'/\[table:[a-zA-Z0-9]+\]/' => '<table>',
'/\[\/table:[a-zA-Z0-9]+\]/' => '</table>',

// Table #2
'/\[tr:[a-zA-Z0-9]+\]/' => '<tr>',
'/\[\/tr:[a-zA-Z0-9]+\]/' => '</tr>',

// Table #3
'/\[td:[a-zA-Z0-9]+\]/' => '<td>',
'/\[\/td:[a-zA-Z0-9]+\]/' => '</td>'
);

function bbdecode($text) {
     global $bbcodes;
     return preg_replace(array_keys($bbcodes), array_values($bbcodes), $text);
}

// Looper resultatet fra SQL-spørringen
$result=mysql_query($sql) or die(mysql_error());
while ($row=mysql_fetch_assoc($result))
{
   echo "<h2>$row[topic_title]</h2>";

$iddd = $row['topic_id'];
// Slutt på tittel
echo bbdecode($row['post_text']);
echo "Les mer <a href='http://www.clanserver.no/forum/viewtopic.php?t=$row[topic_id]' target='_blank' >her</a>";


// Slutt på posttexten

echo "<br />";
   echo "\t <span class=''><b>Postet av:</b> </span><a class='' href='http://www.clanserver.no/forum/memberlist.php?mode=viewprofile&u=$row[topic_poster]' target='_blank' >$row[username]</a><span class=''> | <b>Kommentarer:</b> </span>$row[topic_replies]<span class=''> | <b>Publisert:</b> ";

// 
echo date( 'd M Y H:i', $row['topic_time'] );
echo "</span>";

// Slutt på infobox

echo "<br />";


}

 

Endret av TheClown
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...