Welkom, Gast. Je bent niet ingelogd.

ubb parser

Thomaz
'
Geplaatst op: 16 Jan 2007, 16:26
PimpCoins: 0
💸+
Bewerken Quote

Hallo allemaal,

Ik heb een ubb parser gemaakt, maar ik had nog een paar vraagjes..

1. Hoe zorg ik ervoor, dat plaatjes die groter zijn dan 520 (In de breedte) dat die dan worden verkleind tot 520 in de breedte?

2. Hoe zorg ik er voor bij een code block, dat de code binnenin in kleuren is?

3. Hoe zorg ik ervoor dat een codeblock genummerd wordt?

Dat waren de vragen, hier het script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function ubb($string) 
{ 
$string = preg_replace("#\[b\](.*?)\[/b\]#is", "<b>\${1}</b>", $string); 
$string = preg_replace("#\[u\](.*?)\[/u\]#is", "<u>\${1}</u>", $string); 
$string = preg_replace("#\[i\](.*?)\[/i\]#is", "<em>\${1}</em>", $string); 
$string = preg_replace("#\[s\](.*?)\[/s\]#is", "<s>\${1}</s>", $string); 
// [url]
$string = eregi_replace("\[url\]www.([^\[]*)","<a href="http://www.\\1" target=_blank>\\1", $string); 
$string = eregi_replace("\[url\]([^\[]*)","<a href="\\1" target=_blank>\\1", $string); 
$string = eregi_replace("(\[url=)([A-Za-z0-9_~&=;\?:%@#./\-]+[A-Za-z0-9/])(\])", "<a href="http://\\2" target=_blank>", $string); 
$string = eregi_replace("\[url](http://(.*))", "<a href="\\1" target="_blank">\\1", $string); 
$string = eregi_replace("(\[/url\])", "</a>", $string); 
$string = eregi_replace("http://http://", "http://", $string);  
// [/url]
$string = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si","<font color="\\1">\\2</font>", $string);
$string = preg_replace("#\[align=(.*?)\](.*?)\[/align\]#si","<div align="\\1">\\2</div>", $string);
$string = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si","<font size="\\1">\\2</font>", $string);
$string = preg_replace("#\[img\](.*?)\[/img\]#si","<img src="http://\\1" border=0>\\2</img>", $string);
$string = eregi_replace("http://http://", "http://", $string); 
$string = preg_replace("#\[code\](.*?)\[/code\]#si","<table width=500 cellpading=0 cellspacing=0 border=1><tr><td>colorcoding('\\1')</td></tr></table>", $string); 

return $string; 
}

Bvd. Thomas

Saven
admin
Geplaatst op: 16 Jan 2007, 17:26
PimpCoins: 0
💸+
Bewerken Quote

1) met een javascriptje
2) highlight_string();
3) .

Sharp
:')
moderator
Geplaatst op: 16 Jan 2007, 18:26
PimpCoins: 0
💸+
Bewerken Quote

3. Met een for loop ofzo.
Ik zoek wel ff

Thomaz
'
Geplaatst op: 16 Jan 2007, 18:52
PimpCoins: 0
💸+
Bewerken Quote

Saven, met die highlight_string dat snap ik niet, al heel wat geprobeerd, tevens ook met die 1e vraag. Maar het werkt gewoon niet.

Tuneboy
Geplaatst op: 16 Jan 2007, 19:13
PimpCoins: 0
💸+
Bewerken Quote

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?PHP
function ubb($string) 
{ 
$string = preg_replace("#\[b\](.*?)\[/b\]#is", "<b>\${1}</b>", $string); 
$string = preg_replace("#\[u\](.*?)\[/u\]#is", "<u>\${1}</u>", $string); 
$string = preg_replace("#\[i\](.*?)\[/i\]#is", "<em>\${1}</em>", $string); 
$string = preg_replace("#\[s\](.*?)\[/s\]#is", "<s>\${1}</s>", $string); 
// [url]
$string = eregi_replace("\[url\]www.([^\[]*)","<a href="http://www.\\1" target=_blank>\\1", $string); 
$string = eregi_replace("\[url\]([^\[]*)","<a href="\\1" target=_blank>\\1", $string); 
$string = eregi_replace("(\[url=)([A-Za-z0-9_~&=;\?:%@#./\-]+[A-Za-z0-9/])(\])", "<a href="http://\\2" target=_blank>", $string); 
$string = eregi_replace("\[url](http://(.*))", "<a href="\\1" target="_blank">\\1", $string); 
$string = eregi_replace("(\[/url\])", "</a>", $string); 
$string = eregi_replace("http://http://", "http://", $string);  
// [/url]
$string = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si","<font color="\\1">\\2</font>", $string);
$string = preg_replace("#\[align=(.*?)\](.*?)\[/align\]#si","<div align="\\1">\\2</div>", $string);
$string = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si","<font size="\\1">\\2</font>", $string);
$string = preg_replace("#\[img\](.*?)\[/img\]#si","<img src="http://\\1" border=0>\\2</img>", $string);
$string = eregi_replace("http://http://", "http://", $string); 
$string = preg_replace("#\[code\](.*?)\[/code\]#si","<table width=500 cellpading=0 cellspacing=0 border=1><tr><td>highlight_string('\\1');</td></tr></table>", $string); 

return $string; 
}
?>

Bloe
Geplaatst op: 16 Jan 2007, 19:45
PimpCoins: 0
💸+
Bewerken Quote

Het is trouwens wel gevaarlijk dat je de URL begin- en starttags apart zet, hier kan ook ik bijv. een link van alle tekst erna maken.
Edit:
Hier kan je mischien nog wel iets vinden voor die image te resizen:
[url]http://www.phphulp.nl/php/scripts/9/210/[/url]

[Laatst bewerkt door Bloe op dinsdag 16 januari 2007, om 20:05]
Thomaz
'
Geplaatst op: 16 Jan 2007, 22:24
PimpCoins: 0
💸+
Bewerken Quote

Tuneboy schreef:

[...]

Werkt (helaas) niet, ik krijg dan dit:

highlight_string('<?php

echo "blaat";

$blaat = $_SESSION['blaat'];

?>');

Florian
kunjeditzien:')?
Geplaatst op: 16 Jan 2007, 22:47
PimpCoins: 0
💸+
Bewerken Quote

Volgens mij moet je highlight_string even buiten de quotes halen ..

Lennard
?
Geplaatst op: 17 Jan 2007, 07:23
PimpCoins: 0
💸+
Bewerken Quote

Je moet hem helemaal anders maken.
Als je nu een code blok hebt:
[code]<?php
str_replace('[url]', 'hoi ', $blaat);
?>[/code]
en je gooit die door je UBB parser, wordt [url] ook door je parser vervangen, waardoor hij niet meer werkt.

Zo maak ik ze altijd:
Eerst haal je alle [code]-blokken eruit en zet je in een array. De code zelf vervang je door een MD5-hash (waarvan boeit niet). Die MD5-hash sla je ook op.
Dan heb je dus zo'n array ongeveer:

1
2
3
4
5
6
Array
(
    [9cdfb439c7876e703e307864c9167a15] => 1e code blok
    [3e1e89ea41bf1a3d5dd51b3d97873c70] => 2e code blok
    [3b25e0933efd376db2c0a73ac36cfc2f] => 3e code blok
)

In je bericht staan dus geen [code]-tags met hun inhoud meer, maar md5 hashes.
Dan ga je met het bericht met die hashes erin de smilies, tags, enzovoort vervangen.
Als dat klaar is doorloop je die aray met MD5-hashes en de daarbij horende code blokken. Eventueel kun je nog tellen hoeveel regels het zijn, en daar een nummertje voor laten zetten... Maargoed; daarna vervang je de MD5-hash in het bericht door de highlight_string($value, TRUE) in je array.
Simpel toch?

HyperTesia
Webdeveloper
Geplaatst op: 17 Jan 2007, 13:48
PimpCoins: 0
💸+
Bewerken Quote

Lennard schreef:

Je moet hem helemaal anders maken.
Als je nu een code blok hebt:
[code]<?php
str_replace('[url]', 'hoi ', $blaat);
?>[/code]
en je gooit die door je UBB parser, wordt [url] ook door je parser vervangen, waardoor hij niet meer werkt.

Zo maak ik ze altijd:
Eerst haal je alle [code]-blokken eruit en zet je in een array. De code zelf vervang je door een MD5-hash (waarvan boeit niet). Die MD5-hash sla je ook op.
Dan heb je dus zo'n array ongeveer:
[...]
In je bericht staan dus geen [code]-tags met hun inhoud meer, maar md5 hashes.
Dan ga je met het bericht met die hashes erin de smilies, tags, enzovoort vervangen.
Als dat klaar is doorloop je die aray met MD5-hashes en de daarbij horende code blokken. Eventueel kun je nog tellen hoeveel regels het zijn, en daar een nummertje voor laten zetten... Maargoed; daarna vervang je de MD5-hash in het bericht door de highlight_string($value, TRUE) in je array.
Simpel toch?

Kun je niet ff uitgewerkt vbtje geven?
Zoek dit eig ook al lang xd

Syncie
Geplaatst op: 17 Jan 2007, 14:00
PimpCoins: 0
💸+
Bewerken Quote

Vraag 1: <img src="plaatje" style="max-width: 520px;">
Vraag 2 & 3: Voordat je alle UBB gaat parsen pak je het stuke code dat tussen code tags staat.
Dit base64_encode() en plaatst er weer code tags omheen.
Nadat alle UBB geparsed pak je weer alles wat tussen de code tags staat.
Dan base64_decode() je het weer en heb je de code.
Dan tel je het aantal enters in het script en bouw je en for loopje. ZO laat je de regelnummers laten zien.
Daarnaast laat je dan ze code zien met highlight_string() eromheen.

Saven
admin
Geplaatst op: 17 Jan 2007, 14:22
PimpCoins: 0
💸+
Bewerken Quote

Syncie schreef:

Vraag 1: <img src="plaatje" style="max-width: 520px;">
Vraag 2 & 3: Voordat je alle UBB gaat parsen pak je het stuke code dat tussen code tags staat.
Dit base64_encode() en plaatst er weer code tags omheen.
Nadat alle UBB geparsed pak je weer alles wat tussen de code tags staat.
Dan base64_decode() je het weer en heb je de code.
Dan tel je het aantal enters in het script en bouw je en for loopje. ZO laat je de regelnummers laten zien.
Daarnaast laat je dan ze code zien met highlight_string() eromheen.


Max-width: wordt volgensmij niet ondersteund door IE

HyperTesia
Webdeveloper
Geplaatst op: 17 Jan 2007, 14:28
PimpCoins: 0
💸+
Bewerken Quote

vraag1 heb ik wel antwoord op die ik gebruik..

1
$bericht = preg_replace("#\[img\](.*?)\[/img\]#si","<img src="\\1" border="0" OnLoad="if (this.width > 400) { this.width = 400; }">", $bericht);

Thomaz
'
Geplaatst op: 17 Jan 2007, 14:40
PimpCoins: 0
💸+
Bewerken Quote

Bedankt die 1e werkt Alleen die 2 & 3 snap ik niet wat je daarmee bedoelt

Thomaz
'
Geplaatst op: 17 Jan 2007, 14:54
PimpCoins: 0
💸+
Bewerken Quote

Saven schreef:

[...]
Max-width: wordt volgensmij niet ondersteund door IE

Saven, hoe heb jij dat met die code blocks gedaan. Ik vraag niet om je ubb. Maar waar heb jij een tutorial of iets dergelijks gevonden?

HyperTesia
Webdeveloper
Geplaatst op: 17 Jan 2007, 15:05
PimpCoins: 0
💸+
Bewerken Quote

Thomaz schreef:

[...]
Saven, hoe heb jij dat met die code blocks gedaan. Ik vraag niet om je ubb. Maar waar heb jij een tutorial of iets dergelijks gevonden?

Die had lennard d8 ik gemaakt..

Spoiler 😨 (selecteer om te bekijken)
Botje z'n bericht is weg

[Laatst bewerkt door HyperTesia op woensdag 17 januari 2007, om 15:06]
📫

Nieuw privébericht

🔥

Registreren


Login