RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - StefanT - 01.11.2007
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 />"); } }
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007
Hm, erstmal danke.
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.
Jetzt wäre nur noch herauszufinden wo da der Fehler drinnen steckt.
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - StefanT - 01.11.2007
Immer diese Funktionen vom MyBB. 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."/"; } }
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007
Ok, hab ich gemacht. Aus der parser.php hab ich das Code-Stück gelöscht.
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.
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - StefanT - 01.11.2007
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.
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007
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.
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.
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?
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007
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.
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.
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.
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - marcel3067 - 09.12.2007
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
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - marcel3067 - 12.12.2007
Kann mir niemand helfen?
Wär echt super von euch
Gruß,
Marcel
RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Michael - 12.12.2007
Ist das die komplette Fehlermeldung? Damit lässt sich leider nicht viel anfangen.
|