webForumDet fria alternativet

[KOD]-forum

11 svar · 537 visningar · startad av Jesper2

Jesper2Medlem sedan dec. 200475 inlägg
#1

Jag arbetar på ett litet och privat forum, jag vill att man ska kunna använda "[.KOD.]" och "[./KOD.]" för att skriva ut koder precis som på WF. Är det någon som vet hur jag skall gå tillväga?

Det vore fint med såna där sexiga färger på koden också, men jag antar att det är väldigt svårt att få till =)

Tack på förhand!
MVH,
Jesper Ahlin

kjellMedlem sedan dec. 1999757 inlägg
#2

Det är inte speciellt svårt att få till eftersom det redan finns som inbyggd funktion. Här är ett exempel i sin enklaste form

<?php
$text = "Lite PHP-kod [php2]<?php\n\techo 'Hello world!';\n?>[/php2] i ett inlägg.";
echo preg_replace("/\\[PHP2](.*?)\\[\\/PHP2\]/esi", "'<div>' . highlight_string('$1', true) . '</div>'", $text);
?>

vilket borde resultera i

Lite PHP-kod 
<?php
	echo 'Hello world!';
?>
i ett inlägg.
Jesper2Medlem sedan dec. 200475 inlägg
#3

Hmm.. För det första så fick jag inte det där att fungera, det gav det här felmeddelandet:
"Warning: Unknown modifier 'P' in /home/l/leroevse/leroevse/leroev.se/www/forum_thread.php on line 208"

Sen är det inte bara PHP jag vill använda [.KOD]-taggar till, utan det är till alla språk.

Annars tackar jag så hemskt mycket, det är säkert bara min okunnighet som gör att jag inte klarar av det =)

aasahMedlem sedan mars 20034 471 inlägg
#4

Jesper2 skrev:

Hmm.. För det första så fick jag inte det där att fungera, det gav det här felmeddelandet:
"Warning: Unknown modifier 'P' in /home/l/leroevse/leroevse/leroev.se/www/forum_thread.php on line 208"...

Är någon av Kjells rader på rad 208? Unknown modifier brukar betyda att man har en variabel på angiven rad som man glömt $-tecknet framför.

Jag skulle alltså leta efter en variabel $P som på rad 208 just står som P av misstag...

MatteMedlem sedan aug. 20002 975 inlägg
#5

Misstänker att något backslash har ramlat bort från det som visas på skärmen. Brukar göra det när man visar kod för regexp.

Citera Kjelkls inlägg och kolla koden han skrivit där.

kjellMedlem sedan dec. 1999757 inlägg
#6

Glömde visst bort att forumet strippar en del backslash. Har rättat till så nu går det nog kopiera.

Jesper2 skrev:

Sen är det inte bara PHP jag vill använda [.KOD]-taggar till, utan det är till alla språk.

Lycka till :)

Grundläggande för att skapa syntax är att man har tillgång till (i db eller fil) samtliga funktioner, reservation, taggar etc. etc. som man sedan söker igenom och jämför med texten.
Inte speciellt svårt att fixa men lär ta en hel del tid i anspråk om du ska gå igenom samtliga språk.

Jesper2Medlem sedan dec. 200475 inlägg
#7

Nu funkade det lite bättre! Fast jag fick ett annorlunda felmeddelande som jag inte kan tolka eller citera. Jag tog ett screenshot:

Såhär använder jag koden:

	if($_GET["subject"] == "datorer"){
		$text = preg_replace("/\[PHP2](.*?)\[\/PHP2]/esi", "'<div>' . highlight_string('$1', true) . '</div>'", $text);
	}
	if($useradminclass < 3){
		$text = strip_tags($text, '<b><br><a>');
		$text = nl2br($text);
		$text = ShortWord($text,40);
	}
	else{
		$text = nl2br($text);
		$text = ShortWord($text,40);
	}
	echo $text;

$useradminclass är en variabel som innehåller en siffra från 1-4. Vid 1 & 2 får användaren bara använda <.b>, <.br> och <.a> i sina inlägg. Över 2 får man använda all kod. Det är inte strip_tags som ställer till problem eftersom jag har $useradminclass > 2 :/

Resterande koder, inte PHP alltså, vill jag ha precis som WF's [.KOD]-funktion. De behöver inte vara i speciella färger. Det är trots allt bara ett projektarbete på 100 timmar ;P

Tack så mycket!

kjellMedlem sedan dec. 1999757 inlägg
#8

Ska du inte ha färgsyntax så är det bara att plocka bort den. Nu vet jag inte riktigt hur wFs kod-funktion ser ut men principen blir ungefär

$text2 = 'Lite kod [kod2]$myvar = 'Hello World!';' . "\n" . 'for ($i = 0; $i < 10; $i++) {' . "\n\t" . 'echo $myvar;' . "\n" . '}[/kod2] i ett inlägg.';
echo preg_replace("/\\[KOD2](.*?)\[\\/KOD2]/si", "<pre>$1</pre>", $text2);

vilket då blir

$myvar = 'Hello World!';
for ($i = 0; $i < 10; $i++) {
	echo $myvar;
}

[r]
Ta ingen notis om det som är efter $text2 för forumet strippar backslash-tecknen men tanken är ju att du hämtar meddelandet från en databas.

kjellMedlem sedan dec. 1999757 inlägg
#9

Man kan visst inte bifoga fil när man redigerar inlägg :o

Ditt felmeddelande vet jag inte riktigt vad som orsakar. Kanske något strul med någon backslash som blivit fel vid kopieringen.

Bifogar i.a.f. en fil med koderna vi snackat om så kan du själv testa filen och eventuellt se vad som saknas.

[r]
Blir tydligen något mime-fel med txt-filer i databasen...

Jesper2Medlem sedan dec. 200475 inlägg
#10

Näe det här är skitskumt.. Jag får fortfarande samma resultat ^^
Ok, haha, jag skiter i att behöva använda PHP i inläggen ;D

Men vanlig HTML-kod vore kanon om man kunde fixa med hjälp av [.KOD]-taggar! Vore även fint om koden skrevs ut i Courier mellan taggarna så att det är lätt att läsa koden. Alltså:

I databasen:
[.KOD]<b>jesper</b> är <i>tjock</i>[./KOD]

skrivs ut såhär:

<b>jesper</b> är <i>tjock</i>
kjellMedlem sedan dec. 1999757 inlägg
#11

Det gick i.o.f.s att göra med koden du fick i den bifiogade filen men det verkar inte bli rätt mime-typ när den hämtas från databasen...

Laddade upp en till disk istället som gör ungefär som wF i ditt exempel sedan får du laborera med diverse justeringar.
http://member.webforum.nu/2/119492.php.txt

Jesper2Medlem sedan dec. 200475 inlägg
#12

tack tack :)

144 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)