BB Codes im NewsScript

DooH

Grünschnabel
Also zunächst mal: Ich bin absoluter Neuling in PHP und werde demnächst wohl häufiger Fragen stellen, ich hoffe mal dass jemand so nett ist und mir ein wenig beim Einstieg hilft

Mein Problem ist folgendes:
Ich habe ein NewsScript programmiert und möchte dort gerne die BBCodes einfügen, also wenn jemand
(ohne die punkte *g*)

[.url]www.php.de[./url]

eingibt soll das ganze in <a href="http://www.php.de>http://www.php.de</a> umgewandelt werden

desweiteren soll (wie bei den PHPBB foren) die Möglichkeit bestehen folgendes einzugeben:

[.url=www.php.de]PHP Forum[./url]

Momentan sieht das ganze bei mir so aus:

$news = str_replace('','" target="_blank"></a>',$news);

das klappt logischerweise nicht weil der Link keinen Namen zugewiesen bekommt
ich steh echt aufm Schlauch
 
ehm, wie man BB beim Link anwendet hatten wir schon tausend mal.
Gebrauche bitte für den Anfang die Suchfunktion. Denn so findest du viele ähnliche Beiträge zu deinem Thema ;-)

Slater
 
zu doof

ich glaub dann bin ich zu doof die suchfunktion zu verwenden ... ich find nix

natürlich suche ich ob sowas schonmal gepostet wurde bevor ich nen thread erstelle ....
 
PHP:
$string = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=\"_blank\">\\2</a>",$string);
$string = eregi_replace("\\[url\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=\"_blank\">\\1</a>",$string);

so etwas in der art?

Slater
 
supi danke! :)

hatte zwischenzeitlich doch noch was anderes gefunden, aber ich verwende dein script, das sieht besser aus ...

allerdings habe ich eine frage zu dem anderen (bedenke bitte dass ich absoluter PHP neuling bin)

PHP:
$pattern = "=(\[url\=)(.*)(\])(.*)(\[/url\])=sU";  
$replace = "<a href=\"\\2\" target=\"_blank\">\\4</a>"; 
$news = preg_replace ($pattern, $replace, $news);

Zeile 1:
Damit lege ich das pattern fest, soviel ist klar ...
Zeile 2:
Prinzip auch klar ABER:
Woher weiss PHP, dass ich mit \\2 bzw. \\4 genau die strings meine die ich eine zeile weiter oben deklariert habe? was wäre wenn ich mehrere patterns deklariere? Nummerieren die sich dann durch oder kann ich mit pattern[i] arbeiten?
Alles so kompliziert ... achja und was bedeutet das sU ?
 
Zuletzt bearbeitet:
Wenn du noch mehr Funktionen haben willst, dann habe ich eine "Funktion" für dich ;)

PHP:
function bbcode($Text)
{
    // Replace any html brackets with HTML Entities to prevent executing HTML or script
    // Don't use strip_tags here because it breaks [url] search by replacing & with amp
    $Text = str_replace("<", "&lt", $Text);
    $Text = str_replace(">", "&gt", $Text);

    // Convert new line chars to html <br /> tags
    $Text = nl2br($Text);

    // Set up the parameters for a URL search string
    $URLSearchString = " a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'";
    // Set up the parameters for a MAIL search string
    $MAILSearchString = $URLSearchString . " a-zA-Z0-9\.@";

    // Perform URL Search
    $Text = preg_replace("/\[ url\]([$URLSearchString]*)\[\/url\]/", '<a href="$1" target="_blank">$1</a>', $Text);
    $Text = preg_replace("(\[ url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text);

    // Perform MAIL Search
    $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '<a href="mailto:$1">$1</a>', $Text);
    $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.+?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text);

    // Check for bold text
    $Text = preg_replace("(\[b\](.+?)\[\/b])is",'<span class="bold">$1</span>',$Text);

    // Check for Italics text
    $Text = preg_replace("(\[i\](.+?)\[\/i\])is",'<span class="italics">$1</span>',$Text);

    // Check for Underline text
    $Text = preg_replace("(\[u\](.+?)\[\/u\])is",'<span class="underline">$1</span>',$Text);

    // Check for strike-through text
    $Text = preg_replace("(\[s\](.+?)\[\/s\])is",'<span class="strikethrough">$1</span>',$Text);

    // Check for over-line text
    $Text = preg_replace("(\[o\](.+?)\[\/o\])is",'<span class="overline">$1</span>',$Text);

    // Check for colored text
    $Text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is","<span style=\"color: $1\">$2</span>",$Text);

    // Check for sized text
    $Text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is","<span style=\"font-size: $1px\">$2</span>",$Text);

    // Check for list text
    $Text = preg_replace("/\[list\](.+?)\[\/list\]/is", '<ul class="listbullet">$1</ul>' ,$Text);
    $Text = preg_replace("/\[list=1\](.+?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>' ,$Text);
    $Text = preg_replace("/\[list=i\](.+?)\[\/list\]/s", '<ul class="listlowerroman">$1</ul>' ,$Text);
    $Text = preg_replace("/\[list=I\](.+?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>' ,$Text);
    $Text = preg_replace("/\[list=a\](.+?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>' ,$Text);
    $Text = preg_replace("/\[list=A\](.+?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>' ,$Text);
    $Text = str_replace("[*]", "<li>", $Text);


    // Check for font change text
    $Text = preg_replace("(\[font=(.+?)\](.+?)\[\/font\])","<span style=\"font-family: $1;\">$2</span>",$Text);

    // Declare the format for code layout
    $CodeLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
                        <tr>
                            <td class="quotecodeheader"> Code:</td>
                        </tr>
                        <tr>
                            <td class="codebody">$1</td>
                        </tr>
                   </table>';
    // Check for code text
    $Text = preg_replace("/\[code\](.+?)\[\/code\]/is","$CodeLayout", $Text);

    // Declare the format for [quote] layout
    $QuoteLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
                        <tr>
                            <td class="quotecodeheader"> Quote:</td>
                        </tr>
                        <tr>
                            <td class="quotebody">$1</td>
                        </tr>
                   </table>';
    // Check for code text
    $Text = preg_replace("/\[quote\](.+?)\[\/quote\]/is","$QuoteLayout", $Text);

    // Images
    // [ img]pathtoimage[ /img]
    $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1">', $Text);
    // [ img=widheight]image source[ /img]
    $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text);

    return $Text;
}

Wie du die Funktion aufrufst weisst du ? :)

[EDIT] Das Forum zerrupft den Code...ich pack das mal eben in ne Datei[/EDIT]
 
Zuletzt bearbeitet:
das forum hat den code zerstückelt, das sieht man an den formatierungen im code :p
mussu als txt anhängen;)

€dit:
warst schneller als ich;)
 
Zurück