voor een project waar ik aan werk heb ik een hele set aan UBB-codes geschreven.
Hiervoor heb ik ook de [html]-tag waarmee geswitched kan worden tussen UBB-modus en HTML-modus.
Alle code tussen [html] en [/html] moet genegeerd worden door de regex. De omgezette code wil ik opslaan in de database.
met de functie TEKSTomzetten moet het volgende gebeuren:
hier mijn code:
Voorbeeldje (zonder nl2br):
uitkomst (underscore wegdenken):
Mocht ik (mbv jullie) deze code werkend krijgen dan zal ik er een knip-klare versie hier van achterlaten!
Hiervoor heb ik ook de [html]-tag waarmee geswitched kan worden tussen UBB-modus en HTML-modus.
Alle code tussen [html] en [/html] moet genegeerd worden door de regex. De omgezette code wil ik opslaan in de database.
met de functie TEKSTomzetten moet het volgende gebeuren:
code:
met de functie TEKSTterugzetten moet bovenstaande weer ongedaan worden gemaakt.1
2
3
4
5
6
7
8
9
10
11
12
| Algemeen: * [html] omzetten in <!-- open_html --> * [/html] omzetten in <!-- sluit_html --> In UBB-modus: * UBB code opzetten naar HTML * newlines (\n) omzetten naar <br> * htmlspecialchars($tekst) In HTML-modus: * Géén UBB-codes omzetten * ...eigenlijk dus met rust laten! |
hier mijn code:
PHP:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| <?php function TEKSTomzetten($tekst) { $patterns = array(); $replacements = array(); $patterns[0] = "!^(.*?)(?=(\\[html\]))!Amesi"; $replacements[0] = "UBBnaarHTML('\\1')"; $patterns[1] = "!\\[/html\](.*?)\\[html\]!Amesi"; $replacements[1] = "'[/html]'.UBBnaarHTML('\\1').'[html]'"; $patterns[2] = "!(?=\\[/html\])(.*?)$!Amesi"; $replacements[2] = "UBBnaarHTML('\\1')"; $patterns[3] = "!\\[html\]!msi"; $replacements[3] = "<!-- open_html -->"; $patterns[4] = "!\\[/html\]!msi"; $replacements[4] = "<!-- sluit_html -->"; $tekst = preg_replace($patterns, $replacements, $tekst); return $tekst; } function UBBnaarHTML($tekstblok) { $tekstblok = stripslashes($tekstblok); $patterns = array(); $replacements = array(); $patterns[0] = "!\\[b\](.*?)\\[/b\]!msi"; $replacements[0] = '<b>\1</b>'; //[knip...] $patterns[24] = "!\\[hr=([0-9]{1,3}),(left|center|right){1},(.*?)\]!msi"; $replacements[24] = '<hr width="\1%" align="\2" color="\3">'; $tekstblok = preg_replace($patterns, $replacements, $tekstblok); return $tekstblok; } function TEKSTnaarHTML($tekstblok) { // undo htmlspecialchars() $tekstblok = str_replace( "<" , "<" ,$tekstblok ); $tekstblok = str_replace( ">" , ">" ,$tekstblok ); $tekstblok = str_replace( "&" , "&" ,$tekstblok ); $tekstblok = str_replace( """ , "\"" ,$tekstblok ); $tekstblok = str_replace( "'" , "'" ,$tekstblok ); return $tekstblok; } function HTMLnaarUBB($tekstblok) { $tekstblok = stripslashes($tekstblok); $patterns = array(); $replacements = array(); $patterns[0] = '!<b>(.*?)</b>!msi'; $replacements[0] = '[b]\1[/b]'; //[knip...] $patterns[20] = '![img]"(.*?)"[/img]!msi'; $replacements[20] = '[img=\2,\3]\1[/img]'; $tekstblok = preg_replace($patterns, $replacements, $tekstblok); return $tekstblok; } ?> |
Voorbeeldje (zonder nl2br):
PHP:
1
2
3
4
5
6
7
8
9
10
| $aText = <<<EOD [s]Mij wel doorstrepen[/s][html] [b]Mij niet vet maken en tags weergeven[/b][/html][i]Mij wel cursief maken[/i] [html] <b>[b]wel vet en ubb tags weergeven[/b]</b>[/html] [u]mij onderstrepen[/u][html] <u>niet onderstrepen en html-codes weergeven</u> [s]mijn niet doorstepen[/s][/html] [b]vett[/b] [sup]buiten[/sup] EOD; $aText = TEKSTomzetten($aText); |
uitkomst (underscore wegdenken):
code:
1
2
3
4
5
6
| [s]Mij wel doorstrepen[s] [_b]Mij niet vet maken en tags weergeven[_/b][_i]Mij wel cursief maken[_/i] <b>[_b]wel vet en ubb tags weergeven[_/b]</b> [_u]mij onderstrepen[_/u] [u]niet onderstrepen en html-codes weergeven[/u] [_s]mijn niet doorstepen[_/s] [_b]vett[_/b] [_sup]buiten[_/sup] |
Mocht ik (mbv jullie) deze code werkend krijgen dan zal ik er een knip-klare versie hier van achterlaten!
[ Voor 0% gewijzigd door BobDay op 28-08-2002 14:24 . Reden: code opmaak ]
43% of all statistics are worthless