Autor Zpráva
Anonymní
Profil *
ako mam urobit do guesbooku ktory uklayda obsah do obsah.dat a vsetky znaky ako < alebo > a pod. meni na entity chcel by som aby sa po zadani nejakeho textu v hranatych zatvorkach zobrazil smajlik a mezdi [ B ] tucnz text [ /b ] //ako tu// sikmy text , podciarknuty a farebny......
a ako to mam potom javascriptom po kliknuti na obrazok vlozit do textarea ? dakujem
Anonymní
Profil *
stiahni si mini bb a pozri sa ako je to tam :-)
Yuhů
Profil
ono by se to dalo najít i v kódu téhle stránky, ale asi bude rychlejší to napsat.

Máš nějakou oblast textarea, která má nějakou value (podle toho, co napsal uživatel). K value můžeš přičítat text pomocí operátoru +=.

<textarea name="abc" id="abc"></textarea>

<span onclick="napisText('cokoliv')">čudlík</span>

<script>
var obsahTextarey= docuement.getElementById("abc").value;
function napisText(cokoliv){
obsahTextarey += cokoliv;
}
</script>
Anonymní
Profil *
no, ano, ale ako urobit aby to namiesto toho zadaneho textu nap. [smajlik1] urobilo smajlika,
alebo namiesto [ b ] a [ /b ] (bez medzier) urobilo tucne pismo ??
Anonymní
Profil *
<?php
/* These 2 functions provides BB codes replacement independently for each miniBB update. Don't edit this file if you are unfamiliar with PHP and/or regular expressions. */

function enCodeBB ($msg, $admin) {

$pattern[0] = "/\[url=((f|ht)tp[s]?:\/\/[^<> \n]+?)\](.+?)\[\/url\]/i";
$replacement[0] = '<a href="\\1" target="_blank">\\3</a>';

$pattern[1] = "/\[email=([^<>(): \n]+?)\](.+?)\[\/email\]/i";
$replacement[1] = '<a href="mailto:\\1">\\2</a>';

$pattern[2] = "/\[img(left|right)?\](http:\/\/([^<> \n]+?)\.(gif|jpg|jpeg|png))\[\/img\]/i";
$replacement[2] = '<img src="\\2" border="0" align="\\1" alt="">';

$pattern[3] = "/\[[bB]\](.+?)\[\/[bB]\]/s";
$replacement[3] = '<b>\\1</b>';

$pattern[4] = "/\[[iI]\](.+?)\[\/[iI]\]/s";
$replacement[4] = '<i>\\1</i>';

$pattern[5] = "/\[[uU]\](.+?)\[\/[uU]\]/s";
$replacement[5] = '<u>\\1</u>';

if ($admin == 1) {
$pattern[6] = "/\[font(#[A-F0-9]{6})\](.+?)\[\/font\]/is";
$replacement[6] = '<font color="\\1">\\2</font>';
}

$msg = preg_replace($pattern, $replacement, $msg);

if (function_exists('smileThis') and function_exists('getSmilies')) $msg=smileThis(TRUE,FALSE,$msg);

return $msg;
}

//--------------->
function deCodeBB ($msg) {
$pattern[0] = "/<a href=\"mailto:(.+?)\">(.+?)<\/a>/i";
$replacement[0] = "\\2";

$pattern[1] = "/<a href=\"(.+?)\" target=\"(_new|_blank)\">(.+?)<\/a>/i";
$replacement[1] = "[url=\\1]\\3[/url]";

$pattern[2] = "/<img src=\"(.+?)\" border=\"0\" align=\"(left|right)?\" alt=\"\">/i";
$replacement[2] = "[img\\2]\\1[/img]";

$pattern[3] = "/<[bB]>(.+?)<\/[bB]>/s";
$replacement[3] = "\\1";

$pattern[4] = "/<[iI]>(.+?)<\/[iI]>/s";
$replacement[4] = "\\1";

$pattern[5] = "/<[uU]>(.+?)<\/[uU]>/s";
$replacement[5] = "\\1";

$pattern[6] = "/<font color=\"(#[A-F0-9]{6})\">(.+?)<\/font>/is";
$replacement[6] = '[font\\1]\\2[/font]';

$msg = preg_replace($pattern, $replacement, $msg);
$msg = str_replace ('<br>', "\n", $msg);
if (substr_count($msg, '[img\\2]')>0) $msg=str_replace('[img\\2]', '[img]', $msg);

if (function_exists('smileThis') and function_exists('getSmilies')) $msg=smileThis(FALSE,TRUE,$msg);

return $msg;
}

?>


toto je z miniBB ale funguje asi iba na databazy :-(
Yuhů
Profil
to pak musíš na straně serveru v PHP. Většinou se to dělá nějakým regulárním výrazem nebo obyčejným nahrazením. V případě toho tučného písma by měla stačit funkce strTr()

$novyText = strTr($staryText, "[]", "<>");

Teď si rychle nevzpomínám na PHP funkci, která umí nahrazovat delší texty, jako třeba ten obrázek. Nakopnete mě někdo?
Anonymní
Profil *
noo nie celkom lebo som zabudol ze to sa asi zobryzi tucne a pod. :-)
najme v function deCodeBB
pyty
Profil
function displayForm()
{
global $relativeScriptPath;
global $langName;
global $langEmail;
global $langWebsite;
global $langOptional;
global $langMessage;
global $langSubmit;
global $langSignGuestbook;
global $langColor;
global $langSize;
global $langBig;
global $langBigger;
global $langBiggest;
global $langHelp;

// Writing HTML Code
echo ("<form method=\"post\" action=\"$relativeScriptPath\" name=\"guestbook\" id=\"guestbook\">\n");
echo ("<h1><a name=\"form\"></a>$langSignGuestbook</h1>\n");
echo ("<div id=\"name\">\n");
echo ("<span class=\"label\"><label for=\"name\">$langName</label></span>\n");
echo ("<input name=\"name\" size=\"20\" maxlength=\"50\" tabindex=\"1\" />\n");
echo ("</div>\n");
echo ("<div id=\"email\">\n");
echo ("<span class=\"label\"><label for=\"email\">$langEmail</label></span>\n");
echo ("<input name=\"email\" size=\"20\" maxlength=\"50\" tabindex=\"2\" />\n");
echo ("</div>\n");
echo ("<div id=\"website\">\n");
echo ("<span class=\"label\"><label for=\"website\"><span class=\"optional\">($langOptional)</span>&nbsp;$langWebsite</label></s pan>\n");
echo ("<input name=\"website\" size=\"40\" maxlength=\"80\" value=\"http://\" tabindex=\"3\" />\n");
echo ("</div>\n");
echo ("<div id=\"message\">\n");
echo ("<span class=\"label\"><label for=\"message\">$langMessage</label></span>\n");
echo ("<div class=\"formatcontrols\">\n");
echo ("<a href=\"javascript:addTag(' [emo-smiley] ')\"><img src=\"files/smileys/smiley-smiley.gif\" alt=\"smiley\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-grin] ')\"><img src=\"files/smileys/smiley-grin.gif\" alt=\"grin\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-rolleyes] ')\"><img src=\"files/smileys/smiley-rolleyes.gif\" alt=\"rolleyes\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-eek] ')\"><img src=\"files/smileys/smiley-eek.gif\" alt=\"eek\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-mad] ')\"><img src=\"files/smileys/smiley-mad.gif\" alt=\"mad\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-sad] ')\"><img src=\"files/smileys/smiley-sad.gif\" alt=\"sad\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-lol2] ')\"><img src=\"files/smileys/smiley-lol2.gif\" alt=\"lol2\" /></a>\n");
echo ("<a href=\"javascript:addTag(' [emo-looney] ')\"><img src=\"files/smileys/smiley-looney.gif\" alt=\"looney\" /></a>\n");
echo ("&nbsp;<a href=\"javascript:addTag('[b][/b]')\"><img src=\"files/icons/icon-bold.gif\" alt=\"bold\" /></a>\n");
echo ("<a href=\"javascript:addTag('[i][/i]')\"><img src=\"files/icons/icon-italic.gif\" alt=\"italic\" /></a>\n");
echo ("<a href=\"javascript:addTag('[u][/u]')\"><img src=\"files/icons/icon-underline.gif\" alt=\"underline\" /></a>\n");
echo ("&nbsp;<select onchange=\"addTag(this.options[this.options.selectedIndex].value)\">\n ");
echo ("<option value=\"\" selected=\"selected\">$langColor</option>\n");
echo ("<option value=\" [red][/red] \" style=\"color:red;\">red</option>\n");
echo ("<option value=\" [green][/green] \" style=\"color:green;\">green</option>\n");
echo ("<option value=\" [blue][/blue] \" style=\"color:blue;\">blue</option>\n");
echo ("<option value=\" [orange][/orange] \" style=\"color:orange;\">orange</option>\n");
echo ("<option value=\" [purple][/purple] \" style=\"color:purple;\">purple</option>\n");
echo ("<option value=\" [brown][/brown] \" style=\"color:brown;\">brown</option>\n");
echo ("</select>\n");
echo ("&nbsp;<select onchange=\"addTag(this.options[this.options.selectedIndex].value)\">\n ");
echo ("<option value=\"\" selected=\"selected\">$langSize</option>\n");
echo ("<option value=\" [big][/big] \">$langBig</option>\n");
echo ("<option value=\" [bigger][/bigger] \">$langBigger</option>\n");
echo ("<option value=\" [biggest][/biggest] \">$langBiggest</option>\n");
echo ("</select>\n");
echo ("</div>\n");
echo ("<textarea name=\"message\" cols=\"50\" rows=\"7\" tabindex=\"4\"></textarea>\n");
echo ("</div>\n");
echo ("<div id=\"submit\">\n");
echo ("<input type=\"button\" value=\"$langHelp\" onclick=\"var helpWin = window.open('files/help/help.html','helpWin','left=20,top=20,width=550 ,height=450,scrollbars,status,resizable')\" />\n");
echo ("<input type=\"submit\" value=\"$langSubmit\" tabindex=\"5\" />\n");
echo ("</div>\n");
echo ("</form>\n");
}

//******************************************************************** **********
// function displayMessage displays the $errorMessage error message.

function displayMessage($errorMessage,$msgType)
{
global $langAdminError;
global $langSystemError;
global $langSystemMessage;
global $langGuestbookName;

displayHeader();
echo ("\n\n<div class=\"error\">\n");
echo ("<h2>$langGuestbookName</h2>\n");
echo ("<div class=\"errortype\" style=\"font-style:italic;\">\n");
if ($msgType=="1") // Admin Message
echo ($langAdminError);
if ($msgType=="2") // System Error
echo ($langSystemError);
if ($msgType=="3") // System Message
echo ($langSystemMessage);
echo ("\n</div>\n");
echo ("<div class=\"errormessage\" style=\"margin-top:1em;\">\n");
echo ($errorMessage);
echo ("\n</div>\n");
echo ("</div>\n\n");
displayFooter();
exit;
}


priiblizne...
Anonymní
Profil *
asi sa na to vykašlem... :(
Yuhů
Profil
lidi, co blbnete? Proč sem pastujete kódy z miniBB? Prostě vypíchněte jenom tu funkci, která to dělá. Nebo ji neumíte najít?

sorry za mírné rozladění
haXis
Profil
str_replace() ?
preg_replace() ?

napr...
$text = str_replace("[b]", "<b>", $text);

$text = preg_replace("/\[url=((f|ht)tp[s]?:\/\/[^<> \n]+?)\](.+?)\[\/url\]/i", "<a href="\\1" target="_blank">\\3</a>", $text);
jestli myslis tyhle funkce?
SuE
Profil
hmm, hele php odborníci, já jsem si do komentářů od eLKy přidala smajlíky tak, že jsem stáhla asi 3 guestbooky s smajlíkama, s php manuálem v druhém okně jsem zjistila co dělá co, a jeden jsem opajcnula

Považuju tento postup za nejkratší možný, pokud jde o cíl, nikoliv o naučení se jazyka. Sice jsem si skoro natloukla čenich na chybném js původního autora (document pro mozillu tam chyběl) ale .. zlatej google. Teda ne že bych to ještě dneska věděla .. ale to je kouzlo sklerozy - každý den objevujete něco nového :-)
Anonymní
Profil *
function bbcode($string)
{
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string);
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string);
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string);
$string = preg_replace("#\[link\]www\.(.+?)\[/link\]#is", "<a href=\"http://www.\\1\">www.\\1</a>", $string);
$string = preg_replace("#\[link\](.+?)\[/link\]#is", "<a href=\"\\1\">\\1</a>", $string);
$string = preg_replace("#\[link=(.+?)\](.+?)\[/link\]#is", "<a href=\"\\1\">\\2</a>", $string);
$string = preg_replace("#\[url\]www\.(.+?)\[/url\]#is", "<a href=\"http://www.\\1\">www.\\1</a>", $string);
$string = preg_replace("#\[url\](.+?)\[/url\]#is", "<a href=\"\\1\">\\1</a>", $string);
$string = preg_replace("#\[url=(.+?)\](.+?)\[/url\]#is", "<a href=\"\\1\">\\2</a>", $string);
return $string;
}

function smilies($string)
{
global $smiley_folder;
$string = str_replace(":-)", "<img src=\"".$smiley_folder."smile.gif\" alt=\":-)\" width=\"15\" height=\"15\" />", $string);
$string = str_replace("(-:", "<img src=\"".$smiley_folder."smile.gif\" alt=\":-)\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":)", "<img src=\"".$smiley_folder."smile.gif\" alt=\":)\" width=\"15\" height=\"15\" />", $string);
$string = str_replace("(:", "<img src=\"".$smiley_folder."smile.gif\" alt=\":)\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(";-)", "<img src=\"".$smiley_folder."wink.gif\" alt=\";-)\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":-D", "<img src=\"".$smiley_folder."biggrin.gif\" alt=\":-D\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":D", "<img src=\"".$smiley_folder."biggrin.gif\" alt=\":D\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":-P", "<img src=\"".$smiley_folder."tongue.gif\" alt=\":-P\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":-p", "<img src=\"".$smiley_folder."tongue.gif\" alt=\":-p\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":-|", "<img src=\"".$smiley_folder."neutral.gif\" alt=\":-|\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":|", "<img src=\"".$smiley_folder."neutral.gif\" alt=\":|\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":-(", "<img src=\"".$smiley_folder."frown.gif\" alt=\":-(\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(":(", "<img src=\"".$smiley_folder."frown.gif\" alt=\":(\" width=\"15\" height=\"15\" />", $string);
$string = str_replace(")-:", "<img src=\"".$smiley_folder."frown.gif\" alt=\":-(\" width=\"15\" height=\"15\" />", $string);
return $string;
}

function make_link($string)
{
$string = ' ' . $string;
$string = preg_replace("#(^|[\n ])([\w]+?://.*?[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\">\\2</a>", $string);
$string = preg_replace("#(^|[\n ])((www|ftp)\.[\w\-]+\.[\w\-.\~]+(?:/[^ \"\t\n\r<]*)?)#is", "\\1<a href=\"http://\\2\">\\2</a>", $string);
$string = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $string);
$string = substr($string, 1);
return $string;
}
llook
Profil
Yuhů: To co navrhuješ, to $novyText = strTr($staryText, "[]", "<>"); bych nedoporučil. To už bys mohl rovnou povolit HTML v příspěvcích. O něco lepší je strtr($staryText, array(''=>'<b>', ''=>'</b>'));, i když to zase umožňuje křížení tagů a podobně.
Nejlepší je to co sem poslali Anonymní, pyty a další Anonymní. Ale souhlasím, že lepší by bylo poradit, aby si stáhl miniBB (nebo jiné fórum) a vykuchal si to sám (jako SuE).
Polaroid
Profil
Ja osobně to mam teda udělaný tak, že jednoduše upravím celý obsah pole textarea funkcí
HTMLSpecialChars() a funkcí nl2br() a potom převedu postupně řetězec "&lt;b&gt;" na <b> a tak dále.
Nevim jestli je to ideální způsob, ale mě to funguje a zdá se mi to i celkem bezpečný!
pyty
Profil
ale toto mi nedalo....
http://interval.cz/clanek.asp?article=1781
RAmses
Profil *
<textarea cols="29" rows="5" name="popis" class="inputnews"></textarea>
//zobrazi 30 smajliku
<?
for ($i=1;$i<=30;$i++):
if ($i==16):
echo "<br>";
endif;
?>
//k textu připojí například ~3 kdyz kliknu na 3.smajla
<a href="#" onclick="document.formular.popis.value =formular.popis.value+' ~<?echo $i?> '">
<img border="0" src="smile/<?echo $i?>.gif" width="15" height="15">
</a>
<?endfor?>
----------------------------------------------------------------------
//zpracovani zpravy
<?
// ostraní znaky, které by mohly porušit formátování
$tag = HTMLSpecialChars($popis);

//všechny konce řádků nahradí tagem <BR>
$br = str_replace("\n"," <BR> ", $tag);

//rozdeli text podle mezer
$slovo = Split("[[:blank:]]+", $br);

for($i=0;$i<Count($slovo);$i++):

// je-li delka slova kratsi nez 40 znaku
if (Strlen($slovo[$i])<=40):

//kdyz zacina slovo na ~neco
if (EregI("^(~.*)", $slovo[$i])):

//pak ze slova odstrani ~, ponecha si hodnotu za ~ a prida tag <img>,\\2 znamena, ze pouzije 2.polozku
$slovo[$i] = Ereg_Replace("(~)([0-9]{1,2})",'<img src="smile/\\2.gif" height="15" width="15"> ', $slovo[$i]);
else:
$anchor = $slovo[$i] . " ";
endif;

//pokud slovo zacina na www nebo http:// tak z nej udela odkaz
if (EregI("^(www.*)", $slovo[$i])):
$anchor = "<a href=http://$slovo[$i]/ target=_blank>http://$slovo[$i]/</a> ";
elseif (EregI("^(http://.*)", $slovo[$i])):
$anchor ="<a href=$slovo[$i]/ target=_blank class=odkaz>$slovo[$i]/</a> ";
else:
$anchor = $slovo[$i] . " ";
endif;
$popis2 .= $anchor;

//je-li vsak slovo delsi nez 40 znaku
else:
//pak po 40 znacich prida mezeru pomlcku mezeru, aby tim zajistil zalomeni textu v tabulce
$delit = Ceil(StrLen($slovo[$i])/40);
for($z=0;$z<$delit;$z++):
$cast = Substr($slovo[$i], $z*40, 40);
$popis2 .= $cast . " - ";
endfor;
endif;
endfor;

//no a tady uz z textu v $popis2 nahradi html entity, tak aby tvorili tagy
$bold1 = Str_Replace("&lt;b&gt;", "<b>", $popis2);
$bold2 = Str_Replace("&lt;/b&gt;", "</b>", $bold1);

$italic1 = Str_Replace("&lt;i&gt;", "<i>", $bold2);
$italic2 = Str_Replace("&lt;/i&gt;", "</i>", $italic1);

$under1 = Str_Replace("&lt;u&gt;", "<u>", $italic2);
$under2 = Str_Replace("&lt;/u&gt;", "</u>", $under1);

$zprava = $under2
//pokud vam neni neco jasne, pak vam nezbyva nez vzit knihu jako ja a zjistit si co ktera funkce dela a
//uvidite ze tomu porozumite
//pokud jsem lama, tak mi odpustte, delam php jeden rok a jsem samokuk :)
25k
Profil *
test


test

test
25k
Profil *
test [/b]

[b]test


fdasf fdas fads fasd fdsa fasdfads fasd f

fdsfasdf adsf asd

fsdfasdf
Pavel Prochazka.zde.cz
Profil *
podivej se na me www stranky, tam mas navstevni knihu se smajliky, vcetne php kodu :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0