Gå til innhold

Problemer med mange linjer i BBCODE


Anbefalte innlegg

Her er koden jeg bruker nå:

 

function bbcode($text){
//Code for fixing up the BBCODE
$search = array(
'#\[b\](.*?)\[/b\]#',
'#\[i\](.*?)\[/i\]#',
'#\[u\](.*?)\[/u\]#',
'#\[img\](.*?)\[/img\]#',
'#\[url=(.*?)\](.*?)\[/url\]#',
'#\[code=(.*?)\](.*?)\[/code\]#',
'#\n#'
);

$replace = array(
'<b>\\1</b>',
'<i>\\1</i>',
'<u>\\1</u>',
'<img src="\\1">',
'<a href="\\1" target="_blank">\\2</a>',
'<table border=0 width=50%><tr><td><div class=quote><div class=codename>\\1</div><div class=quotetext>\\2</div></div></td></tr></table>',
'</br>'
);

return preg_replace($search, $replace, $text);
}

 

Problemet kommer når jeg lager en tag med mange linjer:

 

[CODE=PHP]
<?php

echo "Hello World";

?>
['/CODE]

 

Når jeg kjører BBCODE() blir denne flerlinjers-BBCODEN ikke gjort om til HTML.

 

Noen som vet hvordan dette kan fikses?

 

Mvh. Pingvinen

Lenke til kommentar
Videoannonse
Annonse

function bbcode($string)
{
$search = array(
	'/\[b\](.*?)\[\/b\]/',
	'/\[i\](.*?)\[\/i\]/',
	'/\[u\](.*?)\[\/u\]/',
	'/\[img\](.*?)\[\/img\]/',
	'/\[url\=(.*?)\](.*?)\[\/url\]/',
	'/\[code\](.*?)\[\/code\]/',
	'/\[subhead\](.*?)\[\/subhead\]/'
	);

$replace = array(
	'<b>$1</b>',
	'<i>$1</i>',
	'<u>$1</u>',
	'<img src="$1" />',
	'<a href="$1">$2</a>',
	'<code>$1</code>',
	'<h4>$1</h4>'
	);

return preg_replace($search, $replace, $string);
}

 

Dette funker for meg....

Lenke til kommentar
function bbcode($string)

{

$search = array(

  '/\[b\](.*?)\[\/b\]/',

  '/\[i\](.*?)\[\/i\]/',

  '/\[u\](.*?)\[\/u\]/',

  '/\[img\](.*?)\[\/img\]/',

  '/\[url\=(.*?)\](.*?)\[\/url\]/',

  '/\

[code\](.*?)\[\/code\]/',
  '/\[subhead\](.*?)\[\/subhead\]/'
  );
 
$replace = array(
  '<b>$1</b>',
  '<i>$1</i>',
  '<u>$1</u>',
  '<img src="$1" />',
  '<a href="$1">$2</a>',
  '<code>$1</code>',
  '<h4>$1</h4>'
  );
 
return preg_replace($search, $replace, $string);
}[/sql]

 

Dette funker for meg....

6157007[/snapback]

 

Den der gjør jo akkurat det samme som koden min, men multiline vil fortsatt ikke virke. Den virker bare på :

 

[kode]Hei[/kode]

 

og ikke på:

 

[kode]

Hei

Hallo

[/kode]

Lenke til kommentar
mulig du må bruke multiline-modifier, også kjent som "m".

 

Det er "s" modifier som gjør at "." virker på newlines. "m" gjør bare at "^" og "$" betyr start og slutt på hver linje, i motsetning til at de betyr start og slutt på hele strengen.

Lenke til kommentar
mulig du må bruke multiline-modifier, også kjent som "m".

 

Det er "s" modifier som gjør at "." virker på newlines. "m" gjør bare at "^" og "$" betyr start og slutt på hver linje, i motsetning til at de betyr start og slutt på hele strengen.

6168822[/snapback]

 

Har du et eksempel på hvordan man gjør det da?

Lenke til kommentar

Fant _endelig_ ut av det :p :

 

function bbcode($string)
{
$search = array(
	'/\[b\](.*)\[\/b\]/sU',
	'/\[i\](.*)\[\/i\]/sU',
	'/\[u\](.*)\[\/u\]/sU',
	'/\[img\](.*)\[\/img\]/sU',
	'/\[url\=(.*)\](.*)\[\/url\]/sU',
	'/\[code\](.*)\[\/code\]/sU',
	'/\[subhead\](.*)\[\/subhead\]/sU'
	);

$replace = array(
	'<b>$1</b>',
	'<i>$1</i>',
	'<u>$1</u>',
	'<img src="$1" />',
	'<a href="$1">$2</a>',
	'<code>$1</code>',
	'<h4>$1</h4>'
	);

return preg_replace($search, $replace, $string);
}

Endret av Jonhoo
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...