|
|
User gesamt
|
:
|
2425965
|
User online
|
:
|
3
|
|
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
|
|
|
|
MyWebsolution.de Foren » Tutorials » bbcodes tutorial
Seite:
|
1
2
>
|
Posts pro Seite: 5
10
20
|
Autor
|
Thread
|
25.01.2007 18:47 Uhr
|
bbcodes tutorial
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
hallo. ich habe eine frage zu den bbcodes
ich habe dein tutoarial mal ausprobiert, allerdings funktioniert es nicht, mehrere php-codes in einer seite auszugeben. stattdessen erscheint:
PHP:
0
PHP:
1
<?php trim($_variable);?>
woher kommt das?
wie kann ich zeilen anzeigen lassen?
|
|
|
25.01.2007 20:55 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
die rückersetzung hast du drin?
PHP:
<?php
//PHP Code wieder einfügen
foreach($php[1] as $key => $value)
$text = preg_replace("/\[php\]".$key."\[\/php\]/siU", $value, $text);
?>
?
Ich verwende den Code aus dem Tutorial nämlich so ziemlich 1zu1 hier im Forum..
poste mal den Quellcode von dir bitte
|
|
|
27.01.2007 17:44 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
okay mein quellcode:
etwas viel vieleicht aber gut... (hab mal [php durch [ php ersetzt, solltest du im tut vll auch machen ;-) (kannst du beim tutorial vielleicht auch nochmal die ganze funktion am ende posten? danke.
ausserdem funktionieren die zitate (verschachteln ect) bei mir irgentwie nicht.
http://www.beta.bierquartier.de/php_testcenter/bbcodes
PHP:
<?php
//konfiguration
//der kasten für den php-code
$php_start = "<p class=\"code_php\" style=\"overflow:auto; white-space:pre;\">";
$php_end = "</p>";
// Prüft die Linklänge und passt sie gegebenenfalls an
function linkLenght($treffer) {
// $treffer[1] ist die URL
$url = trim($treffer[1]);
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0) {
$linkname = $treffer[2];
}
else {
$linkname = $treffer[1];
}
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}
// Rückgabelink
$ergebnis = "<a href=\"".$url."\">".$linkname."</a>";
return $ergebnis;
}
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " dot ", $mail[1]);
$link = str_replace("@", " bei ", $mail[1]);
return "<a href=\"mailto:".$str."\">".$link."</a>";
}
function parseVar($treffer) {
// $treffer[1] ist die Variable zwischen den [var]-Tags
$str = $treffer[1];
// Klammer in grün hervorheben
$str = str_replace("[", "<span style=\"color:#007700\">[</span>", $str);
$str = str_replace("]", "<span style=\"color:#007700\">]</span>", $str);
// alles was zwischen single quotes ( ') steht rot hervorheben
$str = preg_replace("/('.*')/Uis", "<span style=\"color:#DD0000\"></span>", $str);
// den Rest blau hervorheben
$str = "<span style=\"color:#0000BB\">".$str."</span>";
return $str;
}
function bbcodes ($text) {
//php-code
$php = array();
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU", $text, $php);
foreach($php[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('#'.preg_quote($value, '#').'#','[ php]'.$key.'[/ php]',$text,1);
// Code highlighten
$php[1][$key] = highlight_string($php[1][$key], TRUE);
$php[1][$key] = $php_start.$php[1][$key].$php_end;
}
// Wörter mit mehr als 60 Zeichen werden ab dem 60. Zeichen um ein Leerzeichen ergänzt
// damit der Browser den Text umbrechen kann (, sonst wird das Layout zerstört)
$max_word_lenght = 60;
// Die Länge von Links ist größer, da sie nur im Quelltext als 'lang' erscheinen
// Links werden später noch gesondert behandelt
$max_link_lenght = 200;
// Trennzeichen
$splitter = " ";
// Text in Zeilen aufteilen, sonst würden Zeilenumbrüche (\n) nicht als Worttrennung erkannt
$lines = explode("\n", $text);
//links kürzen
foreach($lines as $key_line => $line) {
// jede Zeile in Wörter aufteilen
$words = explode(" ",$line);
// jedes Wort prüfen
foreach($words as $key_word => $word) {
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.') {
$max_lenght = $max_link_lenght;
}
else {
$max_lenght = $max_word_lenght;
}
$word = trim($word);
// BB-Code Tags entfernen, da sie nicht zur Buchstabenlänge eines Wortes zählen
$word = preg_replace("/\[(.*)\]/Usi", "", $word);
if(strlen($word)>$max_lenght) {
// Trennen des Wortes nach max_length Buchstaben
$words[$key_word] = chunk_split($words[$key_word], $max_lenght, $splitter);
// abziehen der Länge des Trennzeichens, dieses wird am Ende automatisch
// noch einmal eingefügt
$length = strlen($words[$key_word])-strlen($splitter);
$words[$key_word] = substr($words[$key_word],0,$length);
}
}
// fügt die veränderten Wörter wieder zur Zeile als String zusammen
$lines[$key_line] = implode(" ", $words);
// fügt Zeilen wieder zum gesamten Text als String zusammen
$text = implode("\n", $lines);
//text formatieren darstellen
$text = preg_replace("/\[b\](.*)\[\/b\]/Usi", "<span style=\"font-weight: bold;\"></span>", $text);
$text = preg_replace("/\[i\](.*)\[\/i\]/Usi", "<span style=\"font-style: italic;\"></span>", $text);
$text = preg_replace("/\[u\](.*)\[\/u\]/Usi", "<span style=\"text-decoration: underine;\"></span>", $text);
$text = preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi", "<span style=\"color:\"></span>", $text);
$text = preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi", "<img src=\"\" alt=\"\" />", $text);
$text = preg_replace("/\[img](.*)\[\/img\]/Usi", "<img src=\"\" alt=\"nicht bennantes bild\" />", $text);
$text = preg_replace("/\[h1\](.*?)\[\/h1\]/si", "<h1 class=\"ueberschrift\">\1</h1><br />", $text);
$text = preg_replace("/\[h2\](.*?)\[\/h1\]/si", "<h2 class=\"unter_ueberschrift\">\1</h2><br />", $text);
//php-variablen hervorheben
$text = preg_replace_callback("/\[var\](.*)\[\/var\]/Usi", 'parseVar', $text);
//email
$text = preg_replace_callback('"([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})"si', 'no_spam', $text);
//url-umwandlung
$text = preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi", 'linkLenght', $text);
$text = preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi', 'linkLenght', $text);
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
$width = 575;
while(preg_match('/\[quote\](.*)\[\/quote\]/Uis', $text)) {
$width -= 10;
$quote_start = "<p class=\"zitat\" style=\" width:".$width."px\">";
$quote_end = "</p>";
$text = str_replace(array("[quote]","[/quote]"),array($quote_start,$quote_end),$text);
}
//smilies definieren
$smilies = array(
':D' => array('biggrin.gif', '*grins*'),
//okay, die smilies mach ich ein bischen anders als du...
);
//smiies umwandeln
foreach ($smilies as $find => $replace) {
list($img, $title) = $replace;
$replace = '<img src="'.$smilie_pfad.''.$img.'" alt="'
.$find.'" title="'.$title.'"/>';
$text = str_replace($find, $replace, $text);
}
//aus umbrüchen <br> machen
$text = nl2br($text);
//PHP Code wieder einfügen
foreach($php[1] as $key => $value) {}
$text = preg_replace("/\[php\]".$key."\[\/php\]/siU", $value, $text);
}
return $text;
}
Dieser Beitrag wurde am 27.01.2007 um 17:47:12 Uhr von fish zum 2. Mal editiert.
|
|
|
27.01.2007 18:28 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Du hast die Funktionen auch verändert..
2 Klammern sind falsch gesetzt und bei den Zitaten benutzt du str_replace statt preg_replace.
Die PHP-Konfigurationsvariablen kannst du nicht außerhalb der Funktion definieren, weil die Variablen dann in der Funktion nicht bekannt sind.
Schalt beim Testen auch mal error_reporting(E_ALL) an, dann werden dir die ganzen Variablen angezeigt, die in der FUnktion nicht bekannt sind.
Hier die korrigierte Version deiner Funktion:
PHP:
<?php
// Prüft die Linklänge und passt sie gegebenenfalls an
function linkLenght($treffer) {
// $treffer[1] ist die URL
$url = trim($treffer[1]);
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0) {
$linkname = $treffer[2];
}
else {
$linkname = $treffer[1];
}
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}
// Rückgabelink
$ergebnis = "<a href=\"".$url."\">".$linkname."</a>";
return $ergebnis;
}
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " dot ", $mail[1]);
$link = str_replace("@", " bei ", $mail[1]);
return "<a href=\"mailto:".$str."\">".$link."</a>";
}
function parseVar($treffer) {
// $treffer[1] ist die Variable zwischen den [var]-Tags
$str = $treffer[1];
// Klammer in grün hervorheben
$str = str_replace("[", "<span style=\"color:#007700\">[</span>", $str);
$str = str_replace("]", "<span style=\"color:#007700\">]</span>", $str);
// alles was zwischen single quotes ( ') steht rot hervorheben
$str = preg_replace("/('.*')/Uis", "<span style=\"color:#DD0000\"></span>", $str);
// den Rest blau hervorheben
$str = "<span style=\"color:#0000BB\">".$str."</span>";
return $str;
}
function bbcodes ($text) {
// !!-- Konfiguration nach hier setzen --!!
//konfiguration
//der kasten für den php-code
$php_start = "<p class=\"code_php\" style=\"overflow:auto; white-space:pre;\">";
$php_end = "</p>";
//php-code
$php = array();
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU", $text, $php);
foreach($php[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('#'.preg_quote($value, '#').'#','[ php]'.$key.'[/ php]',$text,1);
// Code highlighten
$php[1][$key] = highlight_string($php[1][$key], TRUE);
$php[1][$key] = $php_start.$php[1][$key].$php_end;
}
// Wörter mit mehr als 60 Zeichen werden ab dem 60. Zeichen um ein Leerzeichen ergänzt
// damit der Browser den Text umbrechen kann (, sonst wird das Layout zerstört)
$max_word_lenght = 60;
// Die Länge von Links ist größer, da sie nur im Quelltext als 'lang' erscheinen
// Links werden später noch gesondert behandelt
$max_link_lenght = 200;
// Trennzeichen
$splitter = " ";
// Text in Zeilen aufteilen, sonst würden Zeilenumbrüche (\n) nicht als Worttrennung erkannt
$lines = explode("\n", $text);
//links kürzen
foreach($lines as $key_line => $line) {
// jede Zeile in Wörter aufteilen
$words = explode(" ",$line);
// jedes Wort prüfen
foreach($words as $key_word => $word) {
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.') {
$max_lenght = $max_link_lenght;
}
else {
$max_lenght = $max_word_lenght;
}
$word = trim($word);
// BB-Code Tags entfernen, da sie nicht zur Buchstabenlänge eines Wortes zählen
$word = preg_replace("/\[(.*)\]/Usi", "", $word);
if(strlen($word)>$max_lenght) {
// Trennen des Wortes nach max_length Buchstaben
$words[$key_word] = chunk_split($words[$key_word], $max_lenght, $splitter);
// abziehen der Länge des Trennzeichens, dieses wird am Ende automatisch
// noch einmal eingefügt
$length = strlen($words[$key_word])-strlen($splitter);
$words[$key_word] = substr($words[$key_word],0,$length);
}
}
// fügt die veränderten Wörter wieder zur Zeile als String zusammen
$lines[$key_line] = implode(" ", $words);
// !!-- Klammer schließen --!!
}
// fügt Zeilen wieder zum gesamten Text als String zusammen
$text = implode("\n", $lines);
//text formatieren darstellen
$text = preg_replace("/\[b\](.*)\[\/b\]/Usi", "<span style=\"font-weight: bold;\"></span>", $text);
$text = preg_replace("/\[i\](.*)\[\/i\]/Usi", "<span style=\"font-style: italic;\"></span>", $text);
$text = preg_replace("/\[u\](.*)\[\/u\]/Usi", "<span style=\"text-decoration: underine;\"></span>", $text);
$text = preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi", "<span style=\"color:\"></span>", $text);
$text = preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi", "<img src=\"\" alt=\"\" />", $text);
$text = preg_replace("/\[img](.*)\[\/img\]/Usi", "<img src=\"\" alt=\"nicht bennantes bild\" />", $text);
$text = preg_replace("/\[h1\](.*?)\[\/h1\]/si", "<h1 class=\"ueberschrift\"></h1><br />", $text);
$text = preg_replace("/\[h2\](.*?)\[\/h1\]/si", "<h2 class=\"unter_ueberschrift\"></h2><br />", $text);
//php-variablen hervorheben
$text = preg_replace_callback("/\[var\](.*)\[\/var\]/Usi", 'parseVar', $text);
//email
$text = preg_replace_callback('"([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})"si', 'no_spam', $text);
//url-umwandlung
$text = preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi", 'linkLenght', $text);
$text = preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi', 'linkLenght', $text);
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
$width = 575;
while(preg_match('/\[quote\](.*)\[\/quote\]/Uis', $text)) {
$width -= 10;
$quote_start = "<p class=\"zitat\" style=\" width:".$width."px\">";
$quote_end = "</p>";
// !!-- preg_replace verwenden --!!
$text = preg_replace("/\[quote](.*)\[\/quote\]/Uis", $quote_start."\1".$quote_end, $text);
}
//smilies definieren
$smilies = array(
':D' => array('biggrin.gif', '*grins*'),
//okay, die smilies mach ich ein bischen anders als du...
);
//smiies umwandeln
foreach ($smilies as $find => $replace) {
list($img, $title) = $replace;
$replace = '<img src="'.$smilie_pfad.''.$img.'" alt="'
.$find.'" title="'.$title.'"/>';
$text = str_replace($find, $replace, $text);
}
//aus umbrüchen <br> machen
$text = nl2br($text);
//PHP Code wieder einfügen
// !!-- falsch geschlossene Klammer entfernen--!!
foreach($php[1] as $key => $value) {
$text = preg_replace("/\[php\]".$key."\[\/php\]/siU", $value, $text);
}
return $text;
}
|
|
|
28.01.2007 15:57 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
danke! php funktioniert. aber quotes sind immer noch falsch...
also [quote ][quote ]TEXT[/quote ]text[/quote ] gibt <p class="zitat" style=" width:565px"></p>text[/quote aus...
Dieser Beitrag wurde am 28.01.2007 um 16:44:29 Uhr von fish zum 2. Mal editiert.
|
|
|
28.01.2007 17:08 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Benutz mal <div> statt <p>. Verschachtelte <p> machen syntaktisch nämlich keinen sinn und werden deshalb untereinander dargestellt.
|
|
|
28.01.2007 19:35 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
habe ich jetzt gemacht...
eingabe: [ quote]WWW.X.DE[ quote]LOLOMGWTF[ /quote]TEST[ /quote]
ausgabe: <div class="zitat" style="width:565px;"></div>TEST[/quote]
was läuft da falsch
|
|
|
28.01.2007 23:24 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Man muss zwei backslashes ( \\ ) benutzen, also \\1
PHP:
<?php
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
$width = 575;
while(preg_match('/\[quote\](.*)\[\/quote\]/Uis', $text)) {
$width -= 10;
$quote_start = "<p class=\"zitat\" style=\" width:".$width."px\">";
$quote_end = "</p>";
// !!-- preg_replace verwenden --!!
$text = preg_replace("/\[quote](.*)\[\/quote\]/Uis", $quote_start."\\1".$quote_end, $text);
}
?>
Das wird bei dem PHP-Code hier nicht richtig dargestellt, weil die highlight_string Funktion das als einen "escapten" Backslahs erkennt.
Dieser Beitrag wurde am 28.01.2007 um 23:25:11 Uhr von Flitze zum 1. Mal editiert.
|
|
|
29.01.2007 09:08 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
super, es funktioniert jetzt alles. DANKE nochmal!
|
|
|
29.01.2007 13:21 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
np
|
|
|
30.01.2007 20:43 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
hmm da habe ich doch noch ein problem.. also. ich möchte gerne meine bilder via ein. leider wird dabei die url gekürzt, obwogl ich PHP:
<?// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') OR !substr_count(strtolower($linkname), '[img=') OR !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}?>
eingegeben habe. hier nochmal mein ganzer bbcode: PHP:
<?php
//stellt den php code farbig dar
function SyntaxHighlight($text) {
$code = highlight_string( $text, true );
$code = str_replace('<font color="#FF9900">', '<span class="comment">', $code);
$code = str_replace('<font color="#0000CC">', '<span class="default">', $code);
$code = str_replace('<font color="#000000">', '<span class="html">', $code);
$code = str_replace('<font color="#006600">', '<span class="keyword">', $code);
$code = str_replace('<font color="#CC0000">', '<span class="string">', $code);
$code = str_replace('</font>', '</span>', $code);
//die links zum php-handbuch erstellen
$code = preg_replace( '{([\w]+)(\s*</span><span\s+class="keyword">|)(\s*\()}',
'<a class="keyword_link" title="PHP Handbuch zu öffnen" href="http://www.php.net/"></a>', $code );
$arrHTML = explode( "<br />", $code );
$count = count( $arrHTML );
//html anfang
$html .= "<div class=\"php\">";
$html .= "<div class=\"zeilen\">\n";
//zeilennummern einsetzen
for( $i = 1; $i <= $count; $i++ ) {
$html .= $i."<br />\n";
}
$html .= "</div><div class=\"code\">\n";
//code lines...
foreach( $arrHTML as $line ) {
$html .= $line."<br />\n";
}
//html ende
$html .= "</div></div>\n";
return $html;
}
// Prüft die Linklänge und passt sie gegebenenfalls an
function linkLenght($treffer) {
// $treffer[1] ist die URL
$url = trim($treffer[1]);
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0) {
$linkname = $treffer[2];
}
else {
$linkname = $treffer[1];
}
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') OR !substr_count(strtolower($linkname), '[img=') OR !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}
// Rückgabelink
$ergebnis = "<a href=\"".$url."\">".$linkname."</a>";
return $ergebnis;
}
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " dot ", $mail[1]);
$link = str_replace("@", " bei ", $mail[1]);
return "<a href=\"mailto:".$str."\">".$link."</a>";
}
function parseVar($treffer) {
// $treffer[1] ist die Variable zwischen den [var]-Tags
$str = $treffer[1];
// Klammer in grün hervorheben
$str = str_replace("[", "<span style=\"color:#007700\">[</span>", $str);
$str = str_replace("]", "<span style=\"color:#007700\">]</span>", $str);
// alles was zwischen single quotes ( ') steht rot hervorheben
$str = preg_replace("/('.*')/Uis", "<span style=\"color:#DD0000\"></span>", $str);
// den Rest blau hervorheben
$str = "<span style=\"color:#0000BB\">".$str."</span>";
return $str;
}
function bbcodes ($text) {
//konfiguration
//php-code
$php = array();
$der_code = array();
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU", $text, $php);
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[code\](.*)\[\/code\]/siU", $text, $der_code);
foreach($php[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('#'.preg_quote($value, '#').'#','[php]'.$key.'[ /php]',$text,1);
// Code highlighten
$php[1][$key] = SyntaxHighlight($php[1][$key], TRUE);
}
foreach($der_code[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('~'.preg_quote($value, '~').'~','[code]'.$key.'[/code]',$text,1);
// Code highlighten
$der_code[1][$key] = SyntaxHighlight($php[1][$key], TRUE);
}
// Wörter mit mehr als 60 Zeichen werden ab dem 60. Zeichen um ein Leerzeichen ergänzt
// damit der Browser den Text umbrechen kann (, sonst wird das Layout zerstört)
$max_word_lenght = 60;
// Die Länge von Links ist größer, da sie nur im Quelltext als 'lang' erscheinen
// Links werden später noch gesondert behandelt
$max_link_lenght = 200;
// Trennzeichen
$splitter = " ";
// Text in Zeilen aufteilen, sonst würden Zeilenumbrüche (\n) nicht als Worttrennung erkannt
$lines = explode("\n", $text);
//links kürzen
foreach($lines as $key_line => $line) {
// jede Zeile in Wörter aufteilen
$words = explode(" ",$line);
// jedes Wort prüfen
foreach($words as $key_word => $word) {
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.') {
$max_lenght = $max_link_lenght;
}
else {
$max_lenght = $max_word_lenght;
}
$word = trim($word);
// BB-Code Tags entfernen, da sie nicht zur Buchstabenlänge eines Wortes zählen
$word = preg_replace("/\[(.*)\]/Usi", "", $word);
if(strlen($word)>$max_lenght) {
// Trennen des Wortes nach max_length Buchstaben
$words[$key_word] = chunk_split($words[$key_word], $max_lenght, $splitter);
// abziehen der Länge des Trennzeichens, dieses wird am Ende automatisch
// noch einmal eingefügt
$length = strlen($words[$key_word])-strlen($splitter);
$words[$key_word] = substr($words[$key_word],0,$length);
}
}
// fügt die veränderten Wörter wieder zur Zeile als String zusammen
$lines[$key_line] = implode(" ", $words);
}
// fügt Zeilen wieder zum gesamten Text als String zusammen
$text = implode("\n", $lines);
//text formatieren darstellen
$text = preg_replace("/\[b\](.*)\[\/b\]/Usi", "<span style=\"font-weight: bold;\">\1</span>", $text);
$text = preg_replace("/\[i\](.*)\[\/i\]/Usi", "<span style=\"font-style: italic;\">\1</span>", $text);
$text = preg_replace("/\[u\](.*)\[\/u\]/Usi", "<span style=\"text-decoration: underline;\">\1</span>", $text);
$text = preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi", "<span style=\"color:\1\">\2</span>", $text);
$text = preg_replace("/\[umfluss=(.*)\](.*)\[\/umfluss\]/Usi", "<span class=\"\1\">\2</span>", $text);
$text = preg_replace("/\[video\](.*)\[\/video\]/Usi", "<object type=\"application/x-shockwave-flash\" style=\"width:250px; height:205px\" data=\"\1\"><param name=\"movie\" value=\"\1\" /></object>", $text);
$text = preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi", "<img src=\"\1\" alt=\"\2\" />", $text);
$text = preg_replace("/\[img](.*)\[\/img\]/Usi", "<img src=\"\1\" alt=\"nicht bennantes bild\" />", $text);
$text = preg_replace("/\[h1\](.*?)\[\/h1\]/si", "<h1>\1</h1>", $text);
$text = preg_replace("/\[h2\](.*?)\[\/h1\]/si", "<h2>\1</h2>", $text);
//php-variablen hervorheben
$text = preg_replace_callback("/\[var\](.*)\[\/var\]/Usi", 'parseVar', $text);
//email
$text = preg_replace_callback('"([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})"si', 'no_spam', $text);
//url-umwandlung
$text = preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi", 'linkLenght', $text);
$text = preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi', 'linkLenght', $text);
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
$width = 420;
while(preg_match('/\[quote\](.*)\[\/quote\]/Uis', $text)) {
$width -= 10;
$quote_start = "<div class=\"zitat\" style=\"width:".$width."px\">";
$quote_end = "</div>";
$text = preg_replace("/\[quote](.*)\[\/quote\]/Uis", $quote_start."\1".$quote_end, $text);
}
//die smilies einbinden
$smilie_pfad = "images/smilies/";
$smilies = array(
':D' => array('biggrin.gif', '*grins*'),
':)' => array('biggrin.gif', '*grins*'),
':-D' => array('biggrin.gif', '*grins*'),
'0:-)' => array('angel.gif', 'engel'),
'08-D' => array('angel.gif', 'engel'),
':angel:' => array('angel.gif', 'engel'),
':-H' => array('angry.gif', '*verärgert*'),
':H' => array('angry.gif', '*verärgert*'),
':-@' => array('angry.gif', '*verärgert*'),
':angry:' => array('angry.gif', '*verärgert*'),
':-]' => array('approve.gif', '*zustimmung*'),
':]' => array('approve.gif', '*zustimmung*'),
':approve:' => array('approve.gif', '*zustimmung*'),
':argh:' => array('arg.gif', '*argh*'),
':artist:' => array('artist.gif', 'kuenstler'),
':asian:' => array('asian.gif', 'asiate'),
':baby:' => array('baby.gif', 'baby'),
':bandit:' => array('bandit.gif', 'bandit'),
'*_o' => array('blackeye.gif', 'black eye'),
'o_+' => array('blackeye.gif', 'black eye'),
'+_o' => array('blackeye.gif', 'black eye'),
'o_*' => array('blackeye.gif', 'black eye'),
':blackeye:' => array('blackeye.gif', 'black eye'),
'+_o' => array('blackeye.gif', 'black eye'),
':bunny:' => array('bunny.gif', 'bunny'),
':chinese:' => array('chinese.gif', 'chinese'),
':classic:' => array('classic.gif', '*smile*'),
'+_+' => array('clown.gif', 'clown'),
':clown:' => array('clown.gif', 'clown'),
'?(' => array('confused.gif', 'verwirrt'),
':confused:' => array('confused.gif', 'verwirrt'),
'8-)' => array('cool.gif', '*cool*'),
'8-D' => array('cool.gif', '*cool*'),
'8)' => array('cool.gif', '*cool*'),
'8D' => array('cool.gif', '*cool*'),
':cool:' => array('cool.gif', '*cool*'),
':\'(' => array('cry.gif', '*schnief*'),
':cry:' => array('cry.gif', '*schnief*'),
':dead:' => array('dead.gif', 'tot'),
':I' => array('devious.gif', 'böse'),
':i' => array('devious.gif', 'böse'),
':boese:' => array('devious.gif', 'böse'),
'/-(' => array('disappointed.gif', 'enttäuscht'),
':disappointed:' => array('disappointed.gif', 'enttäuscht'),
':augendreh:' => array('dizzy.gif', '*augendreh*'),
':dude:' => array('dude.gif', 'dude'),
':-o' => array('eek.gif', '*o*'),
':-0' => array('eek.gif', '*o*'),
':-O' => array('eek.gif', '*o*'),
':O' => array('eek.gif', '*o*'),
':0' => array('eek.gif', '*o*'),
':evil:' => array('evil.gif', '*böse*'),
':gangsta:' => array('gangsta.gif', 'gangsta'),
'$-)' => array('greedy.gif', '$$$$$'),
'$_$' => array('greedy.gif', '$$$$$'),
':$$$:' => array('greedy.gif', '$$$$$'),
':-*' => array('kiss.gif', '*kuss*'),
':kiss:' => array('kiss.gif', '*kuss*'),
':~/' => array('knocked-out.gif', '*knocked-out*'),
':knocked-out:' => array('knocked-out.gif', '*knocked-out*'),
'LOL' => array('lol.gif', 'LOL'),
':lol:' => array('lol.gif', 'LOL'),
':schiel:' => array('lurk.gif', '*schiel*'),
':oger:' => array('oger.gif', 'oger'),
':altermann:' => array('oldman.gif', 'alter mann'),
':besserweis:' => array('redface.gif', '*besserwiss*'),
'z-(' => array('pirate.gif', 'pirat'),
':roboter:' => array('robot.gif', 'robot'),
':rolleyes:' => array('rolleyes.gif', '*augenroll*'),
':-(' => array('sad.gif', '*traurig*'),
':(' => array('sad.gif', '*traurig*'),
':schaem:' => array('shame.gif', '*schäm*'),
':-p' => array('tongue.gif', '*zungeraus*'),
';-p' => array('tongue.gif', '*zungeraus*'),
':-P' => array('tongue.gif', '*zungeraus*'),
';-P' => array('tongue.gif', '*zungeraus*'),
':-S' => array('sick.gif', '*krank*'),
':S' => array('sick.gif', '*krank*'),
':krank:' => array('sick.gif', '*krank*'),
':-Z' => array('sleeping.gif', '*schlaf*'),
':-z' => array('sleeping.gif', '*schlaf*'),
':schlaf:' => array('sleeping.gif', '*schlaf*'),
':smart:' => array('smart.gif', '*smart*'),
'o_o' => array('square-eyed.gif', 'viereckige augen'),
';-)' => array('wink.gif', '*zwinker*'),
';)' => array('wink.gif', '*zwinker*'),
':zwinker:' => array('wink.gif', '*zwinker*'),
':-|' => array('worried.gif', '*besorgt*'),
':|' => array('worried.gif', '*besorgt*'),
':-X' => array('x-face.gif', '*nixsag*'),
':nixsag:' => array('x-face.gif', '*nixsag*')
);
foreach ($smilies as $find => $replace) {
list($img, $title) = $replace;
$replace = '<img src="'.$smilie_pfad.''.$img.'" alt="'
.$find.'" title="'.$title.'"/>';
$text = str_replace($find, $replace, $text);
}
//aus umbrüchen <br> machen
$text = nl2br($text);
//PHP Code wieder einfügen
foreach($php[1] as $key => $value) {
$text = preg_replace("/\[php\]".$key."\[\/php\]/siU", $value, $text);
}
foreach($der_code[1] as $key => $value) {
$text = preg_replace("/\[code\]".$key."\[\/code\]/siU", $value, $text);
}
return $text;
}
Dieser Beitrag wurde am 30.01.2007 um 20:44:58 Uhr von fish zum 1. Mal editiert.
|
|
|
30.01.2007 23:01 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
editier mal deinen Beitrag, ich weiß nicht, was du mit
Zitat:hmm da habe ich doch noch ein problem.. also. ich möchte gerne meine bilder via ... ein. leider wird dabei die url gekürzt, obwogl ich
meinst.
Dieser Code
PHP:
<?// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') OR !substr_count(strtolower($linkname), '[img=') OR !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}
?>
bezieht sich nur auf Bilder, die als Links erzeugt werden, z.B.
"Normale"-Bild-URLs werden nur dann nicht gekürzt, wenn sie mit http:// , https:// oder www. beginnen und zwar in diesen Zeilen:
PHP:
<?php
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.') {
$max_lenght = $max_link_lenght;
}
else {
$max_lenght = $max_word_lenght;
}
?>
Wozu willst du Alt-Attribute definieren lassen? also ich erkenne darin keinen Nutzen für den Anwender..
|
|
|
31.01.2007 12:04 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
also ich möchte benutzen. der nutzen ist eine barrierefreie und xhtml valide seite, die ich auch mit dem einsatz von bbcodes erhalten möchte. (ich benutze die bbcodes nicht nur als möglichkeit für benutzer, kommentare zu hinterlassen, sondern auch für meinen eigenen inhalt.)
(barrierefreiheit meint auch, dass blinde (bekanntester verteter: GOOGLE BOTS) oder anderweitig gehandicapte benutzer den inhalt besser erfassen können und nicht ausgeschlossen werden)
Dieser Beitrag wurde am 31.01.2007 um 12:07:47 Uhr von fish zum 1. Mal editiert.
|
|
|
31.01.2007 21:27 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
ohne Prüfung geht es so:
PHP:
<?php
$text = preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi", "<img src=\"\1\" alt=\"\2\" />", $text);
?>
Für ne Prüfung wegen der Bildgröße müsste man die Callbackfunktion anpassen, aber kann sein, dass du das nich brauchst.
|
|
|
31.01.2007 22:37 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
so hatte ich es auch... als ich eingegeben habe die bildurl vom kürzungsdingens abgeschnitten worden.. warum? muss ich das irgendwie modifizieren?
|
|
|
31.01.2007 23:25 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Bei mir funktioniert es ohne probleme, poste mal das Beispiel, das du zum Testen verwendest.
Es kann eigentlich nur dann ein Problem auftreten, wenn im Alternativtext eines der Wörter länger als 60 Zeichen ist
|
|
|
01.02.2007 09:39 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
hmm weiss nicht also das macht probleme :[_url=http://www.fish.bierquartier.de/images/news/t610.jpg] [/url]
ausgabe: <a href="http://www.fish.bierquartier.de/images/news/t610. jpg"><img src="http://www.fish.bierquartier.de/...y" /></a>
|
|
|
01.02.2007 17:02 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Funktioniert bei mir.
Poste nochmal deine bisherige Funktion
|
|
|
01.02.2007 19:31 Uhr
|
|
fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
PHP:
<?php
//stellt den php code farbig dar
function SyntaxHighlight($text) {
$code = highlight_string( $text, true );
$code = str_replace('<font color="#FF9900">', '<span class="comment">', $code);
$code = str_replace('<font color="#0000CC">', '<span class="default">', $code);
$code = str_replace('<font color="#000000">', '<span class="html">', $code);
$code = str_replace('<font color="#006600">', '<span class="keyword">', $code);
$code = str_replace('<font color="#CC0000">', '<span class="string">', $code);
$code = str_replace('</font>', '</span>', $code);
//die links zum php-handbuch erstellen
$code = preg_replace( '{([\w]+)(\s*</span><span\s+class="keyword">|)(\s*\()}',
'<a class="keyword_link" title="PHP Handbuch zu öffnen" href="http://www.php.net/"></a>', $code );
$arrHTML = explode( "<br />", $code );
$count = count( $arrHTML );
//html anfang
$html .= "<div class=\"php\">";
$html .= "<div class=\"zeilen\">\n";
//zeilennummern einsetzen
for( $i = 1; $i <= $count; $i++ ) {
$html .= $i."<br />\n";
}
$html .= "</div><div class=\"code\">\n";
//code lines...
foreach( $arrHTML as $line ) {
$html .= $line."<br />\n";
}
//html ende
$html .= "</div></div>\n";
return $html;
}
// Prüft die Linklänge und passt sie gegebenenfalls an
function linkLenght($treffer) {
// $treffer[1] ist die URL
$url = trim($treffer[1]);
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0) {
$linkname = $treffer[2];
}
else {
$linkname = $treffer[1];
}
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}
// Rückgabelink
$ergebnis = "<a href=\"".$url."\">".$linkname."</a>";
return $ergebnis;
}
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " dot ", $mail[1]);
$link = str_replace("@", " bei ", $mail[1]);
return "<a href=\"mailto:".$str."\">".$link."</a>";
}
function parseVar($treffer) {
// $treffer[1] ist die Variable zwischen den [var]-Tags
$str = $treffer[1];
// Klammer in grün hervorheben
$str = str_replace("[", "<span style=\"color:#007700\">[</span>", $str);
$str = str_replace("]", "<span style=\"color:#007700\">]</span>", $str);
// alles was zwischen single quotes ( ') steht rot hervorheben
$str = preg_replace("/('.*')/Uis", "<span style=\"color:#DD0000\"></span>", $str);
// den Rest blau hervorheben
$str = "<span style=\"color:#0000BB\">".$str."</span>";
return $str;
}
function bbcodes ($text) {
//konfiguration
//php-code
$php = array();
$der_code = array();
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU", $text, $php);
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[code\](.*)\[\/code\]/siU", $text, $der_code);
foreach($php[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('#'.preg_quote($value, '#').'#','[php]'.$key.'[ /php]',$text,1);
// Code highlighten
$php[1][$key] = SyntaxHighlight($php[1][$key], TRUE);
}
foreach($der_code[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('~'.preg_quote($value, '~').'~','[code]'.$key.'[/code]',$text,1);
// Code highlighten
$der_code[1][$key] = SyntaxHighlight($php[1][$key], TRUE);
}
// Wörter mit mehr als 60 Zeichen werden ab dem 60. Zeichen um ein Leerzeichen ergänzt
// damit der Browser den Text umbrechen kann (, sonst wird das Layout zerstört)
$max_word_lenght = 60;
// Die Länge von Links ist größer, da sie nur im Quelltext als 'lang' erscheinen
// Links werden später noch gesondert behandelt
$max_link_lenght = 200;
// Trennzeichen
$splitter = " ";
// Text in Zeilen aufteilen, sonst würden Zeilenumbrüche (\n) nicht als Worttrennung erkannt
$lines = explode("\n", $text);
//links kürzen
foreach($lines as $key_line => $line) {
// jede Zeile in Wörter aufteilen
$words = explode(" ",$line);
// jedes Wort prüfen
foreach($words as $key_word => $word) {
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.') {
$max_lenght = $max_link_lenght;
}
else {
$max_lenght = $max_word_lenght;
}
$word = trim($word);
// BB-Code Tags entfernen, da sie nicht zur Buchstabenlänge eines Wortes zählen
$word = preg_replace("/\[(.*)\]/Usi", "", $word);
if(strlen($word)>$max_lenght) {
// Trennen des Wortes nach max_length Buchstaben
$words[$key_word] = chunk_split($words[$key_word], $max_lenght, $splitter);
// abziehen der Länge des Trennzeichens, dieses wird am Ende automatisch
// noch einmal eingefügt
$length = strlen($words[$key_word])-strlen($splitter);
$words[$key_word] = substr($words[$key_word],0,$length);
}
}
// fügt die veränderten Wörter wieder zur Zeile als String zusammen
$lines[$key_line] = implode(" ", $words);
}
// fügt Zeilen wieder zum gesamten Text als String zusammen
$text = implode("\n", $lines);
//text formatieren darstellen
$text = preg_replace("/\[b\](.*)\[\/b\]/Usi", "<span style=\"font-weight: bold;\">\1</span>", $text);
$text = preg_replace("/\[i\](.*)\[\/i\]/Usi", "<span style=\"font-style: italic;\">\1</span>", $text);
$text = preg_replace("/\[u\](.*)\[\/u\]/Usi", "<span style=\"text-decoration: underline;\">\1</span>", $text);
$text = preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi", "<span style=\"color:\1\">\2</span>", $text);
$text = preg_replace("/\[umfluss=(.*)\](.*)\[\/umfluss\]/Usi", "<span class=\"\1\">\2</span>", $text);
$text = preg_replace("/\[video\](.*)\[\/video\]/Usi", "<object type=\"application/x-shockwave-flash\" style=\"width:250px; height:205px\" data=\"\1\"><param name=\"movie\" value=\"\1\" /></object>", $text);
$text = preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi", "<img src=\"\" alt=\"\" />", $text);
$text = preg_replace("/\[img](.*)\[\/img\]/Usi", "<img src=\"\1\" alt=\"nicht bennantes bild\" />", $text);
$text = preg_replace("/\[h1\](.*?)\[\/h1\]/si", "<h1>\1</h1>", $text);
$text = preg_replace("/\[h2\](.*?)\[\/h1\]/si", "<h2>\1</h2>", $text);
//php-variablen hervorheben
$text = preg_replace_callback("/\[var\](.*)\[\/var\]/Usi", 'parseVar', $text);
//email
$text = preg_replace_callback('"([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})"si', 'no_spam', $text);
//url-umwandlung
$text = preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi", 'linkLenght', $text);
$text = preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi', 'linkLenght', $text);
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
$width = 420;
while(preg_match('/\[quote\](.*)\[\/quote\]/Uis', $text)) {
$width -= 10;
$quote_start = "<div class=\"zitat\" style=\"width:".$width."px\">";
$quote_end = "</div>";
$text = preg_replace("/\[quote](.*)\[\/quote\]/Uis", $quote_start."\1".$quote_end, $text);
}
//die smilies einbinden
$smilie_pfad = "images/smilies/";
$smilies = array(
':D' => array('biggrin.gif', '*grins*'),
':)' => array('biggrin.gif', '*grins*'),
':-D' => array('biggrin.gif', '*grins*'),
'0:-)' => array('angel.gif', 'engel'),
);
foreach ($smilies as $find => $replace) {
list($img, $title) = $replace;
$replace = '<img src="'.$smilie_pfad.''.$img.'" alt="'
.$find.'" title="'.$title.'"/>';
$text = str_replace($find, $replace, $text);
}
//aus umbrüchen <br> machen
$text = nl2br($text);
//PHP Code wieder einfügen
foreach($php[1] as $key => $value) {
$text = preg_replace("/\[php\]".$key."\[\/php\]/siU", $value, $text);
}
foreach($der_code[1] as $key => $value) {
$text = preg_replace("/\[code\]".$key."\[\/code\]/siU", $value, $text);
}
return $text;
}
|
|
|
01.02.2007 20:40 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
ah, jetzt hab ichs
du musst die URL Umwandlung vor der Bildumwandlung machen, denn bei der URL Umwandlung prüfst du ja, ob dort ein [/IMG] enthalten ist. Wenn du die Bilder aber schon vorher umgewandelt hast, steht dort gar kein [IMG] mehr, sondern schon der richtige HTML Quellcode, also <img src="" ... />
|
|
|
Seite:
|
1
2
>
|
|
|
Powered by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
Designed by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
|
|
|
|
|