PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigene Tags für Guestbook o.ä.


ca | Blade-IV
2004-12-30, 14:36:16
So wieder mal ne dumm dämliche fräge: :D

Ich möchte eigene "Tags" verwenden so ähnlich wie hier im Forum, das zB. bei [*URL*] Ein link eingesetzt wird [*/URL*] alles auf PHP basis. (ohne JavaScript, das mag ich gar nich :rolleyes: )

Und wie umgeh ich das mir Text den ich in der DB speicher als Text und nicht als Befehle interpretiert wird ?

(zB. Wenn ich in mein Gästebuch eintippel: <? echo "Lustig"; ?> soll das auch so da stehn.)

TiA,

mfg,Alex.R.

Nase
2004-12-30, 14:43:15
Wenn du einen String z.B. in der Form [ b]Toller Text[ /b] hast, kannst du die bbTags durch HTML-Code ersetzen. Eine PHP-Funktion, die das für dich macht, wäre z.B. ereg_replace.
Um zu verhindern, dass HTML oder PHP-Code geparst wird, wendest du einfach htmlspecialchars() auf den String an.

Gil-galad
2004-12-30, 15:03:48
wendest du einfach htmlspecialchars() auf den String an.

Oder htmlentities(). Das klappt auch ganz gut.

Gil-galad
2004-12-30, 15:05:17
So wieder mal ne dumm dämliche fräge: :D

Ich möchte eigene "Tags" verwenden so ähnlich wie hier im Forum, das zB. bei [*URL*] Ein link eingesetzt wird [*/URL*] alles auf PHP basis. (ohne JavaScript, das mag ich gar nich :rolleyes: )

Ohne Javascript kriegst Du [*URL*] nicht in die Textarea. VBulletin nutzt dafür auch Javascript.

ravage
2004-12-30, 15:46:00
Es wird komplizierter, aber es ist nicht unmöglich...

Gil-galad
2004-12-30, 15:50:07
Es wird komplizierter, aber es ist nicht unmöglich...

Hast Du eventuell nen Beispiel, wie man das auch ohne Javascript da reinkriegt? Würde mich interessieren wie das geht.

ravage
2004-12-30, 15:54:45
Das wäre ganz schöne Fummelarbeit und wohl in keinster weise Praktikabel. Mir ging es auch nur um das "unmöglich" :)

Aber wenn ich mal Zeit (und lust) hab und wenn interesse besteht, könnte ich mich mal ran setzen

/EDIT: Klammer verschoben

Nase
2004-12-30, 15:59:05
Die einzige Möglichkeit, die noch besteht, wäre folgende: Du hast einen Link (z. B. für fett oder unterstrichen). Du klickst darauf, und die Seite wird neugeladen. In das Textfeld werden dann an das bereits Geschriebene die beiden bbTags angehangen. Das ist natürlich nicht wirklich praktikabel, aber eine andere Möglichkeit besteht nicht, wenn man Javascript vermeiden will.

ravage
2004-12-30, 16:10:25
Urgs ich bin total am Thema vorbei geschippert. Ich dachte es geht darum, wie man aus einem

[*url="www.blub.de"*]toller link[*/url*]

einen funktionierenden Link macht.

Sorry, ist gleich Feierabend ;)

ca | Blade-IV
2004-12-30, 16:42:39
danke euch allen, ich setz mich nacher mal dran :)... mal schaun obs klappt :)


//ok ich bräucht nochmal bisschen hilfe :)

$string = "TEST TEXT";
echo ereg_replace ("TEST", "FUNKTIONIERT", $string);

$string = "[*URL]lustiger_link[/URL*]";
echo ereg_replace ("[URL]", "<a href='", $string);

so das erste funktioniert, beim 2ten klappt das nicht so ganz bzw, selbst wenn es klappen würde wie kan ich mehr als ein "TAG" erstetzen....

-> bin wieder googlen :)

mfg,Alex.R.

Nase
2004-12-30, 17:12:55
Google mal lieber hier im Forum, da haben wir das Problem schon mindestens zwei mal angesprochen. Ich hatte dazu dann auch eine Funktion gepostet, die die bbTags aus dem String liest und durch HTML ersetzt.

Kinman
2004-12-30, 19:45:53
Hier hab ich auch was halbwegs praktikables:


<?php
function BBCode($message)
{
$message = trim($message); //Delete whitespaces in front and at the end of the message
$message = "x" . $message;

$message = str_replace("<", "&lt;", $message); //Converting < and >
$message = str_replace(">", "&gt;", $message);

$message = str_replace("\n", "<BR>", $message); //Convert breaks into <BR>
$message = str_replace(" ", "&nbsp;&nbsp;", $message); //Convert whitespaces to &nbsp;


$message = str_replace("\\\"", "\"", $message); //Delete the \ in front of a "
$message = str_replace("\'", "'", $message); //Delete the \ in front of a '

$message = str_replace("", "<B>", $message); //Bold text
$message = str_replace("", "</B>", $message); //Bold text
$message = str_replace("", "<B>", $message); //Bold text
$message = str_replace("", "</B>", $message); //Bold text
$message = str_replace("", "<U>", $message); //Underline
$message = str_replace("", "</U>", $message); //Underline
$message = str_replace("", "<U>", $message); //Underline
$message = str_replace("", "</U>", $message); //Underline
$message = str_replace("", "<I>", $message); //Italic text
$message = str_replace("", "</I>", $message); //Italic text
$message = str_replace("", "<I>", $message); //Italic text
$message = str_replace("", "</I>", $message); //Italic text


$message = str_replace("", "", $message); //Image
$message = str_replace("", "", $message); //Image
$message = str_replace("", "<IMG SRC=\"", $message); //Image
$message = str_replace("", "\">", $message); //Image


$message = str_replace("", "", $message); //Code
$message = str_replace("", "", $message); //Code
$message = str_replace("", "<SPAN STYLE=\"font-family: Courier New; font-size: 12px\">", $message); //Code
$message = str_replace("", "</SPAN>", $message); //Code


$message = str_replace("", "", $message); //URL

if (strpos($message,"[URL=") != FALSE)
{
do
{
$URLStartPos = strpos($message,"[URL=");
$URLEndPos = strpos($message,"[/URL]") + 6;
$URLLength = $URLEndPos -$URLStartPos;
$URLString = substr($message, $URLStartPos, $URLLength);

$URLLinkStart = strpos($URLString, "=") + 1;
$URLLinkEnd = strpos($URLString, "]");
$URLLinkLength = $URLLinkEnd - $URLLinkStart;
$URLLink = substr($URLString, $URLLinkStart, $URLLinkLength);

$URLTextStart = strpos($URLString, "]") + 1;
$URLTextEnd = strpos($URLString, "[", $URLTextStart);
$URLTextLength = $URLTextEnd - $URLTextStart;
$URLText = substr($URLString, $URLTextStart, $URLTextLength);

$URL = "<A HREF=\"" . $URLLink . "\" TARGET=\"_blank\" CLASS=text>" . $URLText . "</A>";

$message = str_replace($URLString, $URL, $message);
}
while (strpos($message,"[URL=") != FALSE); //End of URL
}

$message = str_replace("", "", $message); //COLOR

if (strpos($message,"[COLOR=") != FALSE)
{

do
{
$COLORStartPos = strpos($message,"[COLOR=");
$COLOREndPos = strpos($message,"[/COLOR]") + 8;
$COLORLength = $COLOREndPos -$COLORStartPos;
$COLORString = substr($message, $COLORStartPos, $COLORLength);

$COLORColStart = strpos($COLORString, "=") + 1;
$COLORColEnd = strpos($COLORString, "]");
$COLORColLength = $COLORColEnd - $COLORColStart;
$COLORCol = substr($COLORString, $COLORColStart, $COLORColLength);

$COLORTextStart = strpos($COLORString, "]") + 1;
$COLORTextEnd = strpos($COLORString, "[", $COLORTextStart);
$COLORTextLength = $COLORTextEnd - $COLORTextStart;
$COLORText = substr($COLORString, $COLORTextStart, $COLORTextLength);

$COLOR = "<SPAN STYLE=\"color: #" . $COLORCol . ";\">" . $COLORText . "</SPAN>";

$message = str_replace($COLORString, $COLOR, $message);
}
while (strpos($message,"[COLOR=") != FALSE); //End of COLOR
}




$message = str_replace("", "", $message); //SIZE

if (strpos($message,"[SIZE=") != FALSE)
{
do
{
$SIZEStartPos = @strpos($message,"[SIZE=");
$SIZEEndPos = @strpos($message,"[/SIZE]") + 7;
$SIZELength = $SIZEEndPos -$SIZEStartPos;
$SIZEString = substr($message, $SIZEStartPos, $SIZELength);

$SIZEszStart = @strpos($SIZEString, "=") + 1;
$SIZEszEnd = @strpos($SIZEString, "]");
$SIZEszLength = $SIZEszEnd - $SIZEszStart;
$SIZEsz = substr($SIZEString, $SIZEszStart, $SIZEszLength);

$SIZETextStart = @strpos($SIZEString, "]") + 1;
$SIZETextEnd = @strpos($SIZEString, "[", $SIZETextStart);
$SIZETextLength = $SIZETextEnd - $SIZETextStart;
$SIZEText = substr($SIZEString, $SIZETextStart, $SIZETextLength);

$SIZE = "<SPAN STYLE=\"font-size: " . $SIZEsz . "px;\">" . $SIZEText . "</SPAN>";

$message = str_replace($SIZEString, $SIZE, $message);
}
while (strpos($message,"[SIZE=") != FALSE); //End of SIZE
}

$retVal = null;
$retVal = substr($message,1,strlen($message));
$message = null;
return $retVal;
}
?>


mfg Kinman

ca | Blade-IV
2004-12-30, 20:06:53
hu,

danke wert ich mir auch mal reinziehn :)

mfg,Alex.R.

Kinman
2004-12-30, 20:12:05
np, ist alles aus eigener hand und gebe keine garantie, das es immer 100%ig funzt ;)

mfg Kinman

Nase
2004-12-30, 20:14:52
@ Kinman: Uiuiiuuiiuui :D.

Hab den Thread wiedergefunden, den ich eben meinte. Guck dir das mal an. (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=130776)

ca | Blade-IV
2004-12-30, 23:13:50
Bin grad noch ne Runde WC RoC III Spielen aufm anderen Moni aber das schau ich mir auf jeden danach an :)

thx.

mfg,Alex.R.

MadMan2k
2004-12-31, 02:11:20
Es wird komplizierter, aber es ist nicht unmöglich...
damit kriesgst du aber höchstens die version für Arme mit immer hinten dranhängen hin.

Die aktuelle auswahl und cursorposition kannst du so nicht beachten...

JTHawK
2004-12-31, 16:50:51
Urgs ich bin total am Thema vorbei geschippert. Ich dachte es geht darum, wie man aus einem

[*url="www.blub.de"*]toller link[*/url*]

einen funktionierenden Link macht.

Sorry, ist gleich Feierabend ;)

na darum gehts doch auch !! oder nicht ?
die anderen reden von "klick auf TEXT und dann druück auf Button der daraus den TAG einfügt" .. aber das steh da oben inner frage net drin - oder alle interpretieren hier sonstwas raus ..

allgemein sollte mit Regulären Ausdrücken das Umwandelproblem am Komfortabelsten lösbar sein.

ravage
2004-12-31, 18:15:47
na darum gehts doch auch !! oder nicht ?
die anderen reden von "klick auf TEXT und dann druück auf Button der daraus den TAG einfügt" .. aber das steh da oben inner frage net drin - oder alle interpretieren hier sonstwas raus ..

allgemein sollte mit Regulären Ausdrücken das Umwandelproblem am Komfortabelsten lösbar sein.
Das Problem wurde jetzt ja von Kinman ausreichend gelöst ;)

MadMan2k
2004-12-31, 19:55:52
und wer das richtig sauber haben will, kann auch folgendes nehmen:
http://pear.php.net/package/HTML_BBCodeParser/

Kinman
2005-01-09, 00:56:22
das is natürlich besser als meins :D