Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.39 veröffentlicht (02.06.25)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Beiträge aus bestimmtem Forum auf externer Seite anzeigen
#81
Mache es so:
PHP-Code:
//Ausgabe des Feldes
while($row = mysql_fetch_object($ergebnis))
{
$posts[] = $row;
}

if(
is_array($posts))
{
require_once
'parser.php';
$parser = new postParser;
$options = array('allow_html' => 'no', 'allow_mycode' => 'yes', 'allow_smilies' => 'yes', 'allow_imgcode' => 'yes');
foreach(
$posts as $message)
{
echo(
$parser->parse_message($message->message, $options)."<br />");
}
}
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#82
Hm, erstmal danke. Smile
Also, ich hab es so gemacht, und folgende Fehlernachricht erscheint:
Zitat:Fatal error: Cannot instantiate non-existent class: postparser in /var/www/freehost-script/user_web/monk/auslesen.php on line 34
Zeile 34 ist folgende:
PHP-Code:
$parser = new postParser;

Ich hab mir gedacht, dass anstelle von "postParser" einfach nur "parser" dastehen muss. Hab ich prompt ausprobiert, doch dann kam die Meldung:
Zitat:Fatal error: Call to undefined function: my_substr() in /var/www/freehost-script/user_web/monk/parser.php on line 78
Zeile 78 in der parser.php ist folgende:
PHP-Code:
if(my_substr($this->base_url, my_strlen($this->base_url) -1) != "/")

Schon irgendwie verflixt. ^^
Aber danke dass du/ihr dir/euch die Mühe macht mir zu helfen. Smile

Jetzt wäre nur noch herauszufinden wo da der Fehler drinnen steckt.
[Bild: sysp-50033.gif]
Zitieren
#83
Immer diese Funktionen vom MyBB. Wink Lösche:
PHP-Code:
if($this->base_url != "")
{
if(
my_substr($this->base_url, my_strlen($this->base_url) -1) != "/")
{
$this->base_url = $this->base_url."/";
}
}
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#84
Ok, hab ich gemacht. Aus der parser.php hab ich das Code-Stück gelöscht. Smile

Nun sieht die auslesen.php Datei wie folgt aus:
PHP-Code:
<?php

error_reporting
(E_ALL);

// Daten für Verbindung zur Datenbank
$dbhost = "Localhost";
$dbuser = "*****";
$dbpassword = "*****";
$dbdatabase = "*****";

// Präfix
$prefix = "mybb_";

// URL zum Forum
$url = "http://www.monk.ja-nee.de/myBB";

// Verbindung zur Datenbank aufnehmen
$db = mysql_connect($dbhost,$dbuser,$dbpassword) or die ("Verbindung fehlgeschlagen");
mysql_select_db($dbdatabase,$db);

//Abfrage der Datenbank
$abfrage = "SELECT message FROM {$prefix}posts WHERE pid=28";
$ergebnis = mysql_query($abfrage);

//Ausgabe des Feldes
while($row = mysql_fetch_object($ergebnis))
{
$posts[] = $row;
}

if(
is_array($posts))
{
require_once
'parser.php';
$parser = new parser;
$options = array('allow_html' => 'no', 'allow_mycode' => 'yes', 'allow_smilies' => 'yes', 'allow_imgcode' => 'yes');
foreach(
$posts as $message)
{
echo(
$parser->parse_message($message->message, $options)."<br />");
}
}
?>
Wenn $parser = new parser ist, dann kommt folgende Fehlermeldungen
Zitat:Notice: Undefined index: filter_badwords in /var/www/freehost-script/user_web/monk/parser.php on line 91

Fatal error: Call to a member function on a non-object in /var/www/freehost-script/user_web/monk/parser.php on line 405
Zeile 91 ist die
PHP-Code:
if($options['filter_badwords'] != "no")
und Zeile 405 ist die
PHP-Code:
$this->badwords_cache = $cache->read("badwords");

Wenn ich nun aber $parser = new postParser habe, dann spuckt er folgendes aus
Zitat:Fatal error: Cannot instantiate non-existent class: postparser in /var/www/freehost-script/user_web/monk/auslesen.php on line 34
Zeile 34 ist die folgende:
PHP-Code:
$parser = new postParser;

Und das alles passiert, nachdem ich das Codestück ausgeschnitten habe. Sad
[Bild: sysp-50033.gif]
Zitieren
#85
Das ist viel komplizierter als gedacht. Ich habe mir das nochmal genau angeschaut und es kommen viel öfters Variablen des MyBBs vor. Versuche mal die einzelnen Funktionen, die du brauchst auszubauen und in eine eigene Datei zu verlagern.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#86
Ok, ich kann allerdings nur die raussuchen, die ich meiner Meinung nach für notwendig halte, die dann in einer Datei zu einem ganzen PHP Code zusammenzufügen kann ich leider nich. Sad

Funktion 1:
PHP-Code:
function parse_message($message, $options=array())
{
//global $plugins, $mybb;

// Set base URL for parsing smilies
$this->base_url = "/myBB";

//if($this->base_url != "")
//{
// if(my_substr($this->base_url, my_strlen($this->base_url) -1) != "/")
// {
// $this->base_url = $this->base_url."/";
// }
//}

// Set the options
$this->options = $options;

// Get rid of cartridge returns for they are the workings of the devil
$message = str_replace("\r", "", $message);

// Filter bad words if requested.
if($options['filter_badwords'] != "no")
{
$message = $this->parse_badwords($message);
}

if(
$options['allow_html'] != "yes")
{
$message = $this->parse_html($message);
}
else
{
// Strip out any script tags if HTML is enabled
if($options['allow_html'] == "yes")
{
while(
preg_match("#<script(.*)>(.*)</script(.*)>#is", $message))
{
$message = preg_replace("#<script(.*)>(.*)</script(.*)>#is", "<script$1>$2</script$3>", $message);
}
// Remove these completely
$message = preg_replace("#\s*<base[^>]*>\s*#is", "", $message);
$message = preg_replace("#\s*<meta[^>]*>\s*#is", "", $message);

$message = str_replace(array('<?php', '<!--', '-->', '?>', "<br />\n", "<br>\n"), array('<?php', '<!--', '-->', '?>', "\n", "\n"), $message);
}
}

// If MyCode needs to be replaced, first filter out [code] and [php] tags.
if($options['allow_mycode'] != "no")
{
// First we split up the contents of code and php tags to ensure they're not parsed.
preg_match_all("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si", $message, $code_matches, PREG_SET_ORDER);
$message = preg_replace("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si", "{{mybb-code}}\n", $message);
}

// Always fix bad Javascript in the message.
$message = $this->fix_javascript($message);

// Replace "me" code and slaps if we have a username
if($options['me_username'])
{
$message = preg_replace('#(>|^|\r|\n)/me ([^\r\n<]*)#i', "\\1<span style=\"color: red;\">* {$options['me_username']} \\2</span>", $message);
$message = preg_replace('#(>|^|\r|\n)/slap ([^\r\n<]*)#i', "\\1<span style=\"color: red;\">* {$options['me_username']} {$lang->slaps} \\2 {$lang->with_trout}</span>", $message);
}

// If we can, parse smilies
if($options['allow_smilies'] != "no")
{
$message = $this->parse_smilies($message, $options['allow_html']);
}

// Replace MyCode if requested.
if($options['allow_mycode'] != "no")
{
$message = $this->parse_mycode($message, $options);
}

// Run plugin hooks
//$message = $plugins->run_hooks("parse_message", $message);

if($options['allow_mycode'] != "no")
{
// Now that we're done, if we split up any code tags, parse them and glue it all back together
if(count($code_matches) > 0)
{
foreach(
$code_matches as $text)
{
// Fix up HTML inside the code tags so it is clean
if($options['allow_html'] != "no")
{
$text[2] = $this->parse_html($text[2]);
}

if(
strtolower($text[1]) == "code")
{
$code = $this->mycode_parse_code($text[2]);
}
elseif(
strtolower($text[1]) == "php")
{
$code = $this->mycode_parse_php($text[2]);
}
$message = preg_replace("#\{\{mybb-code\}\}\n?#", $code, $message, 1);
}
}
}

if(
$options['nl2br'] != "no")
{
$message = nl2br($message);
// Fix up new lines and block level elements
$message = preg_replace("#(</?(?:html|head|body|form|div|p|table|thead|tbody|tfoot|tr|td|th|ul|ol|li|div|p)[^>]*>)\s*<br />#i", "$1", $message);
$message = preg_replace("#( )+(</?(?:html|head|body|form|div|p|table|thead|tbody|tfoot|tr|td|th|ul|ol|li|div|p)[^>]*>)#i", "$2", $message);
}

$message = my_wordwrap($message);

//$message = $plugins->run_hooks("parse_message_end", $message);

return $message;
}

Bei dem bin ich mir nicht nicht sicher, ob ich es brauche
PHP-Code:
function cache_mycode()
{
global
$cache, $lang;
$this->mycode_cache = array();

$standard_mycode['b']['regex'] = "#\[b\](.*?)\[/b\]#si";
$standard_mycode['b']['replacement'] = "<strong>$1</strong>";

$standard_mycode['u']['regex'] = "#\[u\](.*?)\[/u\]#si";
$standard_mycode['u']['replacement'] = "<u>$1</u>";

$standard_mycode['i']['regex'] = "#\[i\](.*?)\[/i\]#si";
$standard_mycode['i']['replacement'] = "<em>$1</em>";

$standard_mycode['s']['regex'] = "#\[s\](.*?)\[/s\]#si";
$standard_mycode['s']['replacement'] = "<del>$1</del>";

$standard_mycode['copy']['regex'] = "#\(c\)#i";
$standard_mycode['copy']['replacement'] = "©";

$standard_mycode['tm']['regex'] = "#\(tm\)#i";
$standard_mycode['tm']['replacement'] = "™";

$standard_mycode['reg']['regex'] = "#\(r\)#i";
$standard_mycode['reg']['replacement'] = "®";

$standard_mycode['url_simple']['regex'] = "#\[url\]([a-z]+?://)([^\r\n\"\[<]+?)\[/url\]#sei";
$standard_mycode['url_simple']['replacement'] = "\$this->mycode_parse_url(\"$1$2\")";

$standard_mycode['url_simple2']['regex'] = "#\[url\]([^\r\n\"\[<]+?)\[/url\]#ei";
$standard_mycode['url_simple2']['replacement'] = "\$this->mycode_parse_url(\"$1\")";

$standard_mycode['url_complex']['regex'] = "#\[url=([a-z]+?://)([^\r\n\"\[<]+?)\](.+?)\[/url\]#esi";
$standard_mycode['url_complex']['replacement'] = "\$this->mycode_parse_url(\"$1$2\", \"$3\")";

$standard_mycode['url_complex2']['regex'] = "#\[url=([^\r\n\"\[<&\(\)]+?)\](.+?)\[/url\]#esi";
$standard_mycode['url_complex2']['replacement'] = "\$this->mycode_parse_url(\"$1\", \"$2\")";

$standard_mycode['email_simple']['regex'] = "#\[email\](.*?)\[/email\]#ei";
$standard_mycode['email_simple']['replacement'] = "\$this->mycode_parse_email(\"$1\")";

$standard_mycode['email_complex']['regex'] = "#\[email=(.*?)\](.*?)\[/email\]#ei";
$standard_mycode['email_complex']['replacement'] = "\$this->mycode_parse_email(\"$1\", \"$2\")";

$standard_mycode['color']['regex'] = "#\[color=([a-zA-Z]*|\#?[0-9a-fA-F]{6})](.*?)\[/color\]#si";
$standard_mycode['color']['replacement'] = "<span style=\"color: $1;\">$2</span>";

$standard_mycode['size']['regex'] = "#\[size=(xx-small|x-small|small|medium|large|x-large|xx-large)\](.*?)\[/size\]#si";
$standard_mycode['size']['replacement'] = "<span style=\"font-size: $1;\">$2</span>";

$standard_mycode['size_int']['regex'] = "#\[size=([0-9\+\-]+?)\](.*?)\[/size\]#si";
$standard_mycode['size_int']['replacement'] = "<span style=\"font-size: $1em;\">$2</span>";

$standard_mycode['font']['regex'] = "#\[font=([a-z ]+?)\](.+?)\[/font\]#si";
$standard_mycode['font']['replacement'] = "<span style=\"font-family: $1;\">$2</span>";

$standard_mycode['align']['regex'] = "#\[align=(left|center|right|justify)\](.*?)\[/align\]#si";
$standard_mycode['align']['replacement'] = "<p style=\"text-align: $1;\">$2</p>";

$standard_mycode['hr']['regex'] = "#\[hr\]#si";
$standard_mycode['hr']['replacement'] = "<hr />";

$custom_mycode = $cache->read("mycode");

// If there is custom MyCode, load it.
if(is_array($custom_mycode))
{
foreach(
$custom_mycode as $key => $mycode)
{
$custom_mycode[$key]['regex'] = "#".$mycode['regex']."#si";
}
$mycode = array_merge($standard_mycode, $custom_mycode);
}
else
{
$mycode = $standard_mycode;
}

// Assign the MyCode to the cache.
foreach($mycode as $code)
{
$this->mycode_cache['find'][] = $code['regex'];
$this->mycode_cache['replacement'][] = $code['replacement'];
}
}

Ich glaube das brauche ich auch noch:
PHP-Code:
function parse_mycode($message, $options=array())
{
global
$lang;

// Cache the MyCode globally if needed.
if($this->mycode_cache == 0)
{
$this->cache_mycode();
}

// Parse quotes first
$message = $this->mycode_parse_quotes($message);

$message = $this->mycode_auto_url($message);

$message = str_replace('$', '$', $message);

// Replace the rest
$message = preg_replace($this->mycode_cache['find'], $this->mycode_cache['replacement'], $message);

// Special code requiring special attention
while(preg_match("#\[list\](.*?)\[/list\]#esi", $message))
{
$message = preg_replace("#\[list\](.*?)\[/list\](\r\n?|\n?)#esi", "\$this->mycode_parse_list('$1')\n", $message);
}

// Replace lists.
while(preg_match("#\[list=(a|A|i|I|1)\](.*?)\[/list\](\r\n?|\n?)#esi", $message))
{
$message = preg_replace("#\[list=(a|A|i|I|1)\](.*?)\[/list\]#esi", "\$this->mycode_parse_list('$2', '$1')\n", $message);
}

// Convert images when allowed.
if($options['allow_imgcode'] != "no")
{
$message = preg_replace("#\[img\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise", "\$this->mycode_parse_img('$2')\n", $message);
$message = preg_replace("#\[img=([0-9]{1,3})x([0-9]{1,3})\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise", "\$this->mycode_parse_img('$4', array('$1', '$2'));", $message);
$message = preg_replace("#\[img align=([a-z]+)\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise", "\$this->mycode_parse_img('$3', array(), '$1');", $message);
$message = preg_replace("#\[img=([0-9]{1,3})x([0-9]{1,3}) align=([a-z]+)\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise", "\$this->mycode_parse_img('$5', array('$1', '$2', '$3'));", $message);
}

return
$message;
}

Bilder und Links brauche ich auch
PHP-Code:
function mycode_parse_url($url, $name="")
{
if(!
preg_match("#^[a-z0-9]+://#i", $url))
{
$url = "http://".$url;
}
$fullurl = $url;

$url = str_replace('&', '&', $url);
$name = str_replace('&', '&', $name);

if(!
preg_match("#[a-z0-9]+://#i", $fullurl))
{
$fullurl = "http://".$fullurl;
}
if(!
$name)
{
$name = $url;
}
$name = stripslashes($name);
$url = stripslashes($url);
$fullurl = stripslashes($fullurl);
if(
$name == $url && $this->options['shorten_urls'] != "no")
{
if(
my_strlen($url) > 55)
{
$name = my_substr($url, 0, 40)."...".my_substr($url, -10);
}
}

$name = preg_replace("#&\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode
$link = "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
return
$link;
}
PHP-Code:
function mycode_parse_img($url, $dimensions=array(), $align='')
{
$url = trim($url);
$url = str_replace("\n", "", $url);
$url = str_replace("\r", "", $url);
if(
$align == "right")
{
$css_align = " style=\"float: right;\"";
}
else if(
$align == "left")
{
$css_align = " style=\"float: left;\"";
}
if(
$dimensions[0] > 0 && $dimensions[1] > 0)
{
return
"<img src=\"{$url}\" width=\"{$dimensions[0]}\" height=\"{$dimensions[1]}\" border=\"0\" alt=\"\"{$css_align} />";
}
else
{
return
"<img src=\"{$url}\" border=\"0\" alt=\"\"{$css_align} />";
}
}

Email natürlich auch:
PHP-Code:
function mycode_parse_email($email, $name="")
{
if(!
$name)
{
$name = $email;
}
if(
preg_match("/^([a-zA-Z0-9-_\+\.]+?)@[a-zA-Z0-9-]+\.[a-zA-Z0-9\.-]+$/si", $email))
{
return
"<a href=\"mailto:$email\">".$name."</a>";
}
else
{
return
$email;
}
}

Listen sind ganz wichtig:
PHP-Code:
function mycode_parse_list($message, $type="")
{
$message = str_replace('\"', '"', $message);
$message = preg_replace("#\s*\[\*\]\s*#", "</li>\n<li>", $message);
$message .= "</li>";

if(
$type)
{
$list = "\n<ol type=\"$type\">$message</ol>\n";
}
else
{
$list = "<ul>$message</ul>\n";
}
$list = preg_replace("#<(ol type=\"$type\"|ul)>\s*</li>#", "<$1>", $list);
return
$list;
}

Eigentlich brauche ich alles bis auf die Smileys ... ^^
Tut mir Leid das es jetzt so viel ist, aber ich bin nun mal nicht sehr gut in PHP, aber hoffe trotzdem dass ihr mir weiterhelfen könnt. Smile

Nun, du hast gesagt, ich soll die in eine neu Datei packen. Soll die am Anfang noch was besitzen oder reicht es einfach nur noch am Anfang ein <?php und am Schluss ein ?> zu setzen? Smile
[Bild: sysp-50033.gif]
Zitieren
#87
Also, erst einmal viele vielen Dank, dass ihr mir geholfen habt. Ich hab es nun gelassen, ich werde den MyBB-internen Parser nicht verwenden. Es ist 1. zu viel Arbeit und 2. für mich, da ich ja nicht so geübt in PHP bin, ein wirklich blödes Hindernis. Smile

Nun, allerdings habe ich es endlich geschafft, einen anderen BBCode Parser zum laufen zu bringen. Er funktioniert sehr gut. Deckt zwar nicht alle BBCodes von meinem MyBB ab, aber die Notwendigsten sind vorhanden.

Den BBCode Parser hab ich angehängt.

So sieht der endgültige Quellcode der Datei aus, die die Datenbank ausliest.
PHP-Code:
<?php

error_reporting
(E_ALL);

// Daten für Verbindung zur Datenbank
$dbhost = "Localhost";
$dbuser = "*****";
$dbpassword = "*****";
$dbdatabase = "*****";

// Präfix
$prefix = "mybb_";

// URL zum Forum
$url = "http://www.monk.ja-nee.de/myBB";

// Verbindung zur Datenbank aufnehmen
$db = mysql_connect($dbhost,$dbuser,$dbpassword) or die ("Verbindung fehlgeschlagen");
mysql_select_db($dbdatabase,$db);

//Abfrage der Datenbank
$abfrage = "SELECT message FROM {$prefix}posts WHERE pid=28";
$ergebnis = mysql_query($abfrage);

//Ausgabe des Feldes
while($row = mysql_fetch_object($ergebnis))
{
$posts[] = $row;
}

if(
is_array($posts))
{
foreach(
$posts as $message)
{
require_once
'bb.php';
echo(
bb_decode($message->message)."<br />");
}
}
?>

Also: Nochmal vielen Dank, für die Hilfe. Smile


Das Ergebnis sieht so aus:
http://monk.ja-nee.de/read.php
Ist zwar noch nicht die Seite für unserer Pfarrei, sondern mein anderes Forum, aber man kann schön sehen, dass es funktioniert, obwohl die Bilder etwas zu breit sind, was aber egal ist. Smile


Angehängte Dateien
.php   bb.php (Größe: 4,43 KB / Downloads: 6)
[Bild: sysp-50033.gif]
Zitieren
#88
Hallo,ich bekomme leider immer ein Fehler.

Fehler:
Zitat:message)."
"); } } ?>



Der Code:
Zitat:<?php

error_reporting(E_ALL);

// Daten für Verbindung zur Datenbank
$dbhost = "localhost";
$dbuser = "xxx";
$dbpassword = "xxx";
$dbdatabase = "xxx";

// Präfix
$prefix = "mybb_";

// URL zum Forum
$url = "http://forum.vfr-club.com";

// Verbindung zur Datenbank aufnehmen
$mybb = mysql_connect($localhost,$dblogin,$dbpass) or die ("Verbindung fehlgeschlagen");
mysql_select_db($dbdatabase,$db);

//Abfrage der Datenbank
$abfrage = "SELECT message FROM {$prefix}posts WHERE pid=28";
$ergebnis = mysql_query($abfrage);

//Ausgabe des Feldes
while($row = mysql_fetch_object($ergebnis))
{
$posts[] = $row;
}

if(is_array($posts))
{
foreach($posts as $message)
{
require_once 'bb.php';
echo(bb_decode($message->message)."<br />");
}
}
?>

die Mysql Daten sind im Code eingegeben.

Es läuft über PHP5.

Gruß,
Marcel
Zitieren
#89
Kann mir niemand helfen?

Wär echt super von euchCool

Gruß,
Marcel
Zitieren
#90
Ist das die komplette Fehlermeldung? Damit lässt sich leider nicht viel anfangen.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  MyBB 1.6.14 Logindaten aus externer Datenbank nutzten king555 4 2.128 16.07.2014, 00:22
Letzter Beitrag: Juventiner
  SEO und neue Themen auf externer Seiten robagedy 7 3.843 03.06.2013, 15:36
Letzter Beitrag: robagedy
  Abfrage aus externer DB ausgeben robagedy 2 1.855 24.05.2013, 16:37
Letzter Beitrag: robagedy
  [geteilt] "Forum ist ein Externer Link" Frage Torie 13 6.788 17.09.2012, 09:13
Letzter Beitrag: Torie
  Beiträge von bestimmtem Nutzer nur von bestimmten Nutzer bearbeiten/löschen Frido 3 2.576 05.03.2009, 18:17
Letzter Beitrag: Frido