bbcode Newbie... kriege es nicht gebacken.

mrepox

Erfahrenes Mitglied
Hi,

ich habe verzweifelt versucht eine Textausgabe in BBcode darzustellen, schaffe es aber nicht.

Bin noch nicht wirklich dahinter gekommen, wie es mit BBcode .

Hier aus dem Forum habe ich mal eine Funktion rauskopiert, die ui includen ist:
Code:
function bbcodes($story)
  {
      $neuertext = stripslashes($story);
     $neuertext = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" border='0' />", $neuertext);
     $neuertext = preg_replace("/\[center\](.*)\[\/center\]/isU", "<center>$1</center>", $neuertext);
      $neuertext = preg_replace("/\[b\](.*)\[\/b\]/isU", "<b>$1</b>", $neuertext);
      $neuertext = preg_replace("/\[i\](.*)\[\/i\]/isU", "<i>$1</i>", $neuertext);
      $neuertext = preg_replace("/\[u\](.*)\[\/u\]/isU", "<u>$1</u>", $neuertext);
      $neuertext = eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = eregi_replace("([ \r\n])http\:\/\/www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = preg_replace("/\[url\]www.(.*)\[\/url\]/isU", "http://www.$1", $neuertext);
     $neuertext = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\" target='_blank'>\\2</a>", $neuertext);
     $neuertext = preg_replace("/\[url\](.*)\[\/url\]/isU", "<a href='$1' target='_blank'>$1</a>", $neuertext);
     $neuertext = preg_replace("/\[red\](.*)\[\/red\]/isU", "<font color='red'>$1</font>", $neuertext);
     $neuertext = preg_replace("/\[blue\](.*)\[\/blue\]/isU", "<font color='blue'>$1</font>", $neuertext);
     $neuertext = preg_replace("/\[yellow\](.*)\[\/yellow\]/isU", "<font color='yellow'>$1</font>", $neuertext);
     $neuertext = preg_replace("/\[size=(.*)\](.*)\[\/size\]/isU", "<font size='$1'>$2</font>", $neuertext);
     $neuertext = preg_replace("/\[quote\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td>$1</tr></td></table>", $neuertext);
     $neuertext = preg_replace("/\[quote=(.*)\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td><i>Orginal von $1:</i><br><br>$2</tr></td></table>", $neuertext);
      return $neuertext;
  }

und dieses ist mein Ausgabescript:

Code:
<?php


if (!isset($_REQUEST['tpage']) && !isset($_REQUEST['story'])) {
    header('Location: page.php');
    exit;
}

$tpage = $_REQUEST['tpage'];
$story = intval($_REQUEST['story']);


include_once('db_fns.php');
include_once('header.php');

$handle = db_connect();
if ($story) {
    $query = "select * from stories
              where id = '$story' and
                    published is not null";
} else {
    $query = "select * from stories
              where id = '$tpage' and
                    published is not null
              order by published desc";
}
$result = $handle->query($query);

while ($story = $result->fetch_assoc()) {
    // Schlagzeile
     
    echo "<h2>{$story['headline']}</h2>";
    // Bild
    if ($story['picture']) {
        echo '<div style="float:right; margin:0px 0px 6px 6px;">';
        echo '<img src="resize_image.php?image=';
        echo urlencode($story[picture]);
        echo '&max_width=200&max_height=120"  align = right/></div>';
    }
    // Zusatzzeile
    $w = get_writer_record($story['writer']);
    echo '<br /><p class="byline">';
    echo $w[full_name] . ', ';
    echo date('M d, H:i', $story['modified']);
    echo '</p>';
    
    
    // Haupttext
    echo $story['story_text'];
     
    
    
}
echo '<br><br><br><a href="http://www.webexil-linux.de"><i><font size="-1">Home</font></i></a>';
include_once('footer.php');

?>


Kann mir jemand zeigen wie ich im Ausgabescript die Funktion einbinde und die jetztige Ausgabe in bbcode Ausgabe ändern kann?

Wäre echt froh wenns mir jemand mit zusammenbauen kann.

:)
 
Naja du musst einfach nur die Funktion auf die Teile deines Arrays ausführen.....
also z.B. so:

PHP:
$story['wasweisich'] = story($story['wasweisich']);
 
Jo, bringt mich nicht wirklich weiter....

Habs nochmal selber probiert, ohne Erfolg, kanns jemand genauer?

Gruß Markus




edit: hier habe ich mal mein versuch gepastet
Code:
<?php

function bbcodes($story)
  {
      $neuertext = stripslashes($story);
    $neuertext = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" border='0' />", $neuertext);
    $neuertext = preg_replace("/\[center\](.*)\[\/center\]/isU", "<center>$1</center>", $neuertext);
      $neuertext = preg_replace("/\[b\](.*)\[\/b\]/isU", "<b>$1</b>", $neuertext);
      $neuertext = preg_replace("/\[i\](.*)\[\/i\]/isU", "<i>$1</i>", $neuertext);
      $neuertext = preg_replace("/\[u\](.*)\[\/u\]/isU", "<u>$1</u>", $neuertext);
      $neuertext = eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = eregi_replace("([ \r\n])http\:\/\/www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = preg_replace("/\[url\]www.(.*)\[\/url\]/isU", "http://www.$1", $neuertext);
    $neuertext = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\" target='_blank'>\\2</a>", $neuertext);
    $neuertext = preg_replace("/\[url\](.*)\[\/url\]/isU", "<a href='$1' target='_blank'>$1</a>", $neuertext);
    $neuertext = preg_replace("/\[red\](.*)\[\/red\]/isU", "<font color='red'>$1</font>", $neuertext);
    $neuertext = preg_replace("/\[blue\](.*)\[\/blue\]/isU", "<font color='blue'>$1</font>", $neuertext);
    $neuertext = preg_replace("/\[yellow\](.*)\[\/yellow\]/isU", "<font color='yellow'>$1</font>", $neuertext);
    $neuertext = preg_replace("/\[size=(.*)\](.*)\[\/size\]/isU", "<font size='$1'>$2</font>", $neuertext);
    $neuertext = preg_replace("/\[quote\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td>$1</tr></td></table>", $neuertext);
    $neuertext = preg_replace("/\[quote=(.*)\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td><i>Orginal von $1:</i><br><br>$2</tr></td></table>", $neuertext);
      }
      return $neuertext;
 
  



?>

<?php


if (!isset($_REQUEST['tpage']) && !isset($_REQUEST['story'])) {
    header('Location: page.php');
    exit;
}

$tpage = $_REQUEST['tpage'];
$story = intval($_REQUEST['story']);


include_once('db_fns.php');
include_once('header.php');

$handle = db_connect();
if ($story) {
    $query = "select * from stories
              where id = '$story' and
                    published is not null";
} else {
    $query = "select * from stories
              where id = '$tpage' and
                    published is not null
              order by published desc";
}
$result = $handle->query($query);

while ($story = $result->fetch_assoc()) {
    // Schlagzeile
     
    echo "<h2>{$story['headline']}</h2>";
    // Bild
    if ($story['picture']) {
        echo '<div style="float:right; margin:0px 0px 6px 6px;">';
        echo '<img src="resize_image.php?image=';
        echo urlencode($story[picture]);
        echo '&max_width=200&max_height=120"  align = right/></div>';
    }
    // Zusatzzeile
    $neuertext = bbcodes($story);

    $w = get_writer_record($story['writer']);
    echo '<br /><p class="byline">';
    echo $w[full_name] . ', ';
    echo date('M d, H:i', $story['modified']);
    echo '</p>';
    
    
    // Haupttext
    //echo $story['story_text']; das war die ursprüngliche Ausgabe 
 echo ($neuertext);
     
    
    
}
echo '<br><br><br><a href="http://www.webexil-linux.de"><i><font size="-1">Home</font></i></a>';
include_once('footer.php');

?>
 
Zuletzt bearbeitet:
Und wie bzw. wo hast du es versucht?

Tip: evtl. vergibst du für die Funktion oder für die Variable einen anderen Namen, dann wird es vielleicht ein bisschen übersichtlicher?! ;)
 
War ich wohl zu schnell mit meiner Antwort ;-]

mrepox hat gesagt.:
Code:
<?php

....snip.....

    // Zusatzzeile
    $neuertext = bbcodes($story);
    
    // Haupttext
    //echo $story['story_text']; das war die ursprüngliche Ausgabe 
 echo ($neuertext);

.....snip.....
 
?>

Das wird so nicht funktionieren das du die Funktion auf das komplette Array ausführst...
Probier es bitte mal so:

PHP:
$neuertext = bbcodes($story['story_text']);
echo $neuertext;

PS: die Klammern kannst du dir bei dem echo sparen ;)
 
naja, die function heißt bbcodes und die Var des textes ist "story", "neuertext" spricht doch für sich, oder?


edit: ok, ich auch zu schnell!!

edit 2: deinen vorschlag hatte ich auch schon.... gab einen weißen bildschrim
 
Hmmm...
ok dann musst du kucken woran es liegt das er keinen Text zurück liefert!

Wenn
PHP:
print_r ( $story);
die gewünschten Felder/Inhalte ausgibt dann wird es wohl an der Funktion liegen...

evtl. hier:
PHP:
function bbcodes($story)
  {
......snip...........
      }
return $neuertext;

der "return" sollte schon noch im Funktion-Tag drinstehen.... ;)
 
steht doch drin ?!
---------------------------

ps: der befehl print_r gibt nichts aus....
 
Zuletzt bearbeitet:
Habe nochmal probiert mit dem Erfolg das nun die Seite wieder erscheint aber überhaupt kein Text angezeigt wird.

Code:
<?php

function bbcodes($orgtext)
  {
      $neuertext = stripslashes($orgtext);
     $neuertext = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" border='0' />", $neuertext);
     $neuertext = preg_replace("/\[center\](.*)\[\/center\]/isU", "<center>$1</center>", $neuertext);
      $neuertext = preg_replace("/\[b\](.*)\[\/b\]/isU", "<b>$1</b>", $neuertext);
      $neuertext = preg_replace("/\[i\](.*)\[\/i\]/isU", "<i>$1</i>", $neuertext);
      $neuertext = preg_replace("/\[u\](.*)\[\/u\]/isU", "<u>$1</u>", $neuertext);
      $neuertext = eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = eregi_replace("([ \r\n])http\:\/\/www\\.([^ ,\r\n]*)","\\1http://www.\\2",$neuertext);
      $neuertext = preg_replace("/\[url\]www.(.*)\[\/url\]/isU", "http://www.$1", $neuertext);
     $neuertext = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\" target='_blank'>\\2</a>", $neuertext);
     $neuertext = preg_replace("/\[url\](.*)\[\/url\]/isU", "<a href='$1' target='_blank'>$1</a>", $neuertext);
     $neuertext = preg_replace("/\[red\](.*)\[\/red\]/isU", "<font color='red'>$1</font>", $neuertext);
     $neuertext = preg_replace("/\[blue\](.*)\[\/blue\]/isU", "<font color='blue'>$1</font>", $neuertext);
     $neuertext = preg_replace("/\[yellow\](.*)\[\/yellow\]/isU", "<font color='yellow'>$1</font>", $neuertext);
     $neuertext = preg_replace("/\[size=(.*)\](.*)\[\/size\]/isU", "<font size='$1'>$2</font>", $neuertext);
     $neuertext = preg_replace("/\[quote\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td>$1</tr></td></table>", $neuertext);
     $neuertext = preg_replace("/\[quote=(.*)\](.*)\[\/quote\]/isU", "<table border='1' cellspacing='0' cellpadding='2' bgcolor='EFEFEF' width='95%' align='center'><tr><td><i>Orginal von $1:</i><br><br>$2</tr></td></table>", $neuertext);
      return $neuertext;
  }  
 
  



?>

<?php


if (!isset($_REQUEST['tpage']) && !isset($_REQUEST['story'])) {
    header('Location: page.php');
    exit;
}

$tpage = $_REQUEST['tpage'];
$story = intval($_REQUEST['story']);


include_once('db_fns.php');
include_once('header.php');

$handle = db_connect();
if ($story) {
    $query = "select * from stories
              where id = '$story' and
                    published is not null";
} else {
    $query = "select * from stories
              where id = '$tpage' and
                    published is not null
              order by published desc";
}
$result = $handle->query($query);
$orgtext =($story['story_text']);
$neuertext = bbcodes($story['story_text']);

while ($story = $result->fetch_assoc()) {
    // Schlagzeile
     
    echo "<h2>{$story['headline']}</h2>";
    // Bild
    if ($story['picture']) {
        echo '<div style="float:right; margin:0px 0px 6px 6px;">';
        echo '<img src="resize_image.php?image=';
        echo urlencode($story[picture]);
        echo '&max_width=200&max_height=120"  align = right/></div>';
    }
    // Zusatzzeile
    
    
    $w = get_writer_record($story['writer']);
    echo '<br /><p class="byline">';
    echo $w[full_name] . ', ';
    echo date('M d, H:i', $story['modified']);
    echo '</p>';
    
    
    // Haupttext
    //echo $story['story_text']; das war die ursprüngliche Ausgabe 
   echo "$neuertext";
 
     
    
    
}
echo '<br><br><br><a href="http://www.webexil-linux.de"><i><font size="-1">Home</font></i></a>';
include_once('footer.php');

?>
 

Neue Beiträge

Zurück