Gå til innhold

ereg_replace(); hvordan lage [bbcodes] ?


Anbefalte innlegg

trenger litt hjelp her, har problemer med å lage en

 som replacer med <table width="xx"><td></td></table> og sånt, førstedelen fungerer
 
Dette fungerer:
$kilden = ereg_replace("<","&",$kilden);
$kilden = ereg_replace(">","&",$kilden); 
 
 
Dette fungerer ikke:
$kilden = ereg_replace("[code]","<table width="xx"><td>",$kilden); 
$kilden = ereg_replace("

","</td></table>",$kilden);

 

om du kan hjelpe eller eventuelt har mulige erstattninger eller snippets hadde jeg blitt glad om du posta her eller maila meg tilbake :)

Lenke til kommentar
Videoannonse
Annonse

Kilden nu:

 

if ($kilden && $kilden) {

$kilden = ereg_replace("<","&",$kilden);

$kilden = ereg_replace(">","&",$kilden);

$kilden = ereg_replace("CODESTART","$codestart",$kilden);

$kilden = ereg_replace("CODEEND","$codeend",$kilden);

stripslashes($kilden);

}

 

viss jeg har CODESTART <? echo"something";?>

 

blir det seendes ut som dette:

 

<? echo"something";?>

 

trodde stripslashes ville fikse dette jeg? noen forslag?

Lenke til kommentar

du trenger ikke "" rundt variabler.

og jeg ville heller ha brukt str_replace().

ta en titt her:

http://no2.php.net/manual/en/function.str-replace.php

If you don't need fancy replacing rules, you should always use this function instead of ereg_replace() or preg_replace().

 


$codestart = "<table width="xx"><tr><td>";

$codeend = "</td></tr></table>";



$kilden = str_replace("code", $codestart, $kilden);

$kilden = str_replace("/code", $codeend, $kilden);

(måtte fjerne [] jeg og....)

Lenke til kommentar

får fremdeles " på echoen

 

koden:

 

<?

$codestart = "<br><table border="1" bgcolor="#FFFFCC" cellspacing="0" cellpadding="0"><tr><td height="100" valign="center" align="left">";

$codeend = "</td></tr></table><br>";

echo"Kilden før:";

echo"<br>";

echo"$kilden";

echo"<br>";echo"<br>";

if ($kilden && $kilden) {

$kilden = str_replace("<","&",$kilden);

$kilden = str_replace(">","&",$kilden);

$kilden = str_replace("CODESTART",$codestart,$kilden);

$kilden = str_replace("CODEEND",$codeend,$kilden);

stripslashes($kilden);

}

echo"<br>";

echo"Kilden etter:";

echo"<br>";

 

echo"$kilden";

?>

 

har du lyst å teste er det bare å kopiere koden og lagre som et php dokument

bare definer $kilden som feks. side.php?kilden=<?echo"test"?>

Lenke til kommentar


function code_replace($str) {

$codestart = "<br><table border="1" bgcolor="#FFFFCC" cellspacing="0" cellpadding="0"><tr><td height="100" valign="center" align="left">"; 

$codeend = "</td></tr></table><br>"; 



$str = str_replace("<","&", $str); 

$str = str_replace(">","&", $str); 

$str = str_replace("[code]", $codestart, $str); 

$str = str_replace("
", $codeend, $str);


stripslashes($str);

return $str;

}



echo "Kilden før:";



$replace = "

 

kjør den der du så skal det funke.

bare lagre det som en php fil så får du se...

Lenke til kommentar
  • 2 uker senere...

Mange morsomme forslag her, men det enkleste, mest effektive, og mest feilsikre er nok å bruke regulere utrykk. Disse linjene finner MØNSTERET og bytter det ut. Se her:


$streng = "[code]Bla bla bla
";


$streng = preg_replace("/

 

På denne måten slipper du å bekymre deg om åpne bbcode-tagger. Da blir det helt enkelt ikke gjort noe med! (Hadde vært kjipt om noen la inn kun en [/code], og vips så er tabelloppsettet på nettsiden din vræka)

Lenke til kommentar
  • 1 måned senere...

Glimrende tråd :) Driver med det samma nå. Prøvde å rappe kode fra phpbb forumet, men det gikk ikke så bra... hehe...

 

Tenkte også å lage knapper som setter inn koden slik som det er her når man poster. Altså setter inn (B), (u) eller (i) inn i textarea. (med [] istedenfor () seff) Samtidig at man kan merke tekst og klikke (B) så kommer det startkode og sluttkode automatisk rundt teksten.

 

Dette krever vel javascript og det kan jeg NULL av...

 

Noen som veit hvordan koden blir eller har fått ut riktig kode av phpbb2 kildekoden?

 

Takker for svar :)

 

Akke

Lenke til kommentar
  • 2 måneder senere...

Det er bare å rappe rett ut herifra, men det blir bare surr i andre nettlesere enn nyeste IE, mener jeg å huske, men her er nå iallefall den biten av den jeg bruker:

<form action="action.php" method="get" name="form">

 	<script language="JavaScript" type="text/javascript">

<!--

// bbCode control by

// subBlue design

// www.subBlue.com



// Startup variables

var imageTag = false;

var theSelection = false;



// Check for Browser & Platform for PC & IE specific bits

// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var clientPC = navigator.userAgent.toLowerCase(); // Get client info

var clientVer = parseInt(navigator.appVersion); // Get browser version



var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));

var is_nav  = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)

               && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)

               && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));



var is_win   = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));

var is_mac    = (clientPC.indexOf("mac")!=-1);





// Helpline nyhets

b_help = "Fet tekst: [b]tekst[/b]  (alt+b)";

i_help = "Kursiv tekst: [i]tekst[/i]  (alt+i)";

u_help = "Understreket tekst: [u]tekst[/u]  (alt+u)";

a_help = "Lukk alle åpne tagger";



// Define the bbCode tags

bbcode = new Array();

bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]');

imageTag = false;



// Shows the help nyhets in the helpline window

function helpline(help) {

document.form.helpbox.value = eval(help + "_help");

}





// Replacement for arrayname.length property

function getarraysize(thearray) {

for (i = 0; i < thearray.length; i++) {

 if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))

 	return i;

 }

return thearray.length;

}



// Replacement for arrayname.push(value) not implemented in IE until version 5.5

// Appends element to the array

function arraypush(thearray,value) {

thearray[ getarraysize(thearray) ] = value;

}



// Replacement for arrayname.pop() not implemented in IE until version 5.5

// Removes and returns the last element of an array

function arraypop(thearray) {

thearraysize = getarraysize(thearray);

retval = thearray[thearraysize - 1];

delete thearray[thearraysize - 1];

return retval;

}





function bbstyle(bbnumber) {



donotinsert = false;

theSelection = false;

bblast = 0;



if (bbnumber == -1) { // Close all open tags & default button names

 while (bbcode[0]) {

 	butnumber = arraypop(bbcode) - 1;

 	document.form.nyhet.value += bbtags[butnumber + 1];

 	buttext = eval('document.form.addbbcode' + butnumber + '.value');

 	eval('document.form.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');

 }

 imageTag = false; // All tags are closed including image tags :D

 document.form.nyhet.focus();

 return;

}



if ((clientVer >= 4) && is_ie && is_win)

 theSelection = document.selection.createRange().text; // Get text selection



if (theSelection) {

 // Add tags around selection

 document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];

 document.form.nyhet.focus();

 theSelection = '';

 return;

}



// Find last occurance of an open tag the same as the one just clicked

for (i = 0; i < bbcode.length; i++) {

 if (bbcode[i] == bbnumber+1) {

 	bblast = i;

 	donotinsert = true;

 }

}



if (donotinsert) {  // Close all open tags up to the one just clicked & default button names

 while (bbcode[bblast]) {

   butnumber = arraypop(bbcode) - 1;

   document.form.nyhet.value += bbtags[butnumber + 1];

   buttext = eval('document.form.addbbcode' + butnumber + '.value');

   eval('document.form.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');

   imageTag = false;

 	}

 	document.form.nyhet.focus();

 	return;

} else { // Open tags



 if (imageTag && (bbnumber != 14)) {  // Close image tag before adding another

 	document.form.nyhet.value += bbtags[15];

 	lastValue = arraypop(bbcode) - 1;	// Remove the close image tag from the list

 	document.form.addbbcode14.value = "Img";	// Return button back to normal state

 	imageTag = false;

 }



 // Open tag

 document.form.nyhet.value += bbtags[bbnumber];

 if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag

 arraypush(bbcode,bbnumber+1);

 eval('document.form.addbbcode'+bbnumber+'.value += "*"');

 document.form

.nyhet.focus();

 return;

}

storeCaret(document.form

.nyhet);

}



// Insert at Claret position. Code from

// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130

function storeCaret(textEl) {

if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();

}



//-->

</script>

 	<script type="text/javascript">

<!--

// Insert at Claret position. Code from

// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130

function emoticon(text) {

text = ' ' + text + ' ';

if (document.form.nyhet.createTextRange && document.form.nyhet.caretPos) {

 var caretPos = document.form.nyhet.caretPos;

 caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;

 document.form.nyhet.focus();

} else {

document.form.nyhet.value  += text;

document.form.nyhet.focus();

}

}



function storeCaret(textEl) {

if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();

}

//-->



</script>

 	<input type="button" class="button" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" onmouseover="helpline('b')" /> 

 

<input type="button" class="button" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" 

onclick="bbstyle(2)" onmouseover="helpline('i')" /> 

 

<input type="button" class="button" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; 

width: 30px" onclick="bbstyle(4)" onmouseover="helpline('u')" /> 

 

<a href="javascript:bbstyle(-1)" onmouseover="helpline('a')">Lukk tagger</a>

 	<p><textarea class="box" cols="54" rows="16" name="nyhet" id="nyhet" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);"></textarea></p>

 	<p><input type="text" name="helpbox" size="46" class="helpline" value="Teksten kan formateres ved enkle grep :-)" maxlength="44" /></p>

 </form>

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...