Gå til innhold

Problemer med mange linjer i BBCODE


Anbefalte innlegg

Skrevet

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

Videoannonse
Annonse
Skrevet

Har nå prøvd dette og det ville ikke virke helt som jeg ønsket.

 

Er det noen som vet om en bedre teknikk for å få dette til å virke?

Skrevet

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....

Skrevet
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]

Skrevet
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.

Skrevet
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?

Skrevet (endret)

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

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...