Welkom, Gast. Je bent niet ingelogd.

UBB - PHP

Basjee
Octo
Geplaatst op: 20 Jul 2007, 18:59
PimpCoins: 0
💸+
Bewerken Quote

Hey,

Ik heb een class, daar probeer ik nu ook codetags bij te maken..

Maar tuurlijk is er weer een probleem..

Hier is de parser;

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
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
class UBB 
{ 
    var $input; 
    var $codes; 
    protected $return; 

    public function __construct( $code ) 
    { 
        $this->codes = $code; 
    } 

    public function UBB( $input ) 
    { 
        $this->return = $this->code_check( $input, $this->codes ); 
        return $this->return; 
    } 
    
    public function code_check( $input, $code ) 
    { 
        $this->return = $input; 

        if( preg_match( '/h/i', $code ) ) 
        { 
            $this->return = htmlentities( stripslashes ( $this->return ) ); 
        } 
        
        if( preg_match( '/u/i', $code ) ) 
        { 
            $this->return = $this->do_ubb( $this->return ); 
        } 

        if( preg_match( '/j/i', $code ) ) 
        { 
            $this->return = $this->no_javascript( $this->return ); 
        } 

        if( preg_match( '/e/i', $code ) ) 
        { 
            $this->return = $this->replace_enters( $this->return ); 
        } 
        
        return $this->return; 
    } 
    
    public function do_ubb( $input ) 
    { 
    
        $input = preg_replace( '#\[b\](.+?)\[\/b\]#is', '<strong>\\1</strong>', $input );
        $input = preg_replace( '#\[i\](.+?)\[\/i\]#is', '<em>\\1</em>', $input ); 
        $input = preg_replace( '#\[u\](.+?)\[\/u\]#is', '<u>\\1</u>', $input ); 
        $input = preg_replace( '#\[center\](.+?)\[\/center\]#is', '<center>\\1</center>', $input ); 
        $input = preg_replace( '#\[color=(.+?)\](.+?)\[\/color\]#is', '<span style="color: \\1;">\\2</span>', $input ); 
        $input = preg_replace( '#\[url=(.+?)\](.+?)\[\/url\]#is', '<a href="\\1">\\2</a>', $input ); 
        $input = preg_replace( '#\[url\](.+?)\[\/url\]#is', '<a href="\\1">\\1</a>', $input ); 
        $input = preg_replace( '#\[img\](.+?)\[\/img\]#is', '<img src="\\1" />', $input ); 
        $input = preg_replace( '#\[quote\](.+?)\[\/quote\]#is', '<div style="border: 1px dotted #000000;"><strong>Quote:</strong><br />\\1</div>', $input ); 
        $input = preg_replace( '#\[quote=(.+?)\](.+?)\[\/quote\]#is', '<div style="border: 1px dotted #000000;"><strong>Quote from \\1:</strong><br />\\2</div>', $input ); 
        $input = preg_replace( '#\[offtopic\](.+?)\[\/offtopic\]#is', '<span style="font-size: 10px; color: gray;"><em>Offtopic:<br />\\1</em></span>', $input ); 
        $input = preg_replace( '#\[code\](.*?)\[\/code\]#is', $this->highlight ('\\1') , $input ); 
       return $input; 
       
    } 
    
    public function no_javascript( $input ) 
    { 
        $input = preg_replace( '/javascript:/i', '', $input ); 
        return $input; 
    } 

    public function replace_enters( $input ) 
    { 
        $input = nl2br( $input ); 
        return $input; 
    } 
    
    public function highlight ( $input )
    {
        return highlight_string($input, TRUE);
    }
    
} 
?>

Maar als ik nu dit als input geef
[code*]
[b*] test [/b*]
[/code*]

Dan komt 'test' er bold uit.
Dat moet natuurlijk niet.

Heeft iemand misschien een idee om dit op te lossen?

Dit werkt ook niet:

1
2
3
4
5
6
<?
$input = preg_replace( '#\[code\](.*?)\[\/code\]#is', '[*code]' . base64_encode (  '\\1' ) . '[*/code]', $input); 
// hier de rest van de parser.. hieronder alleen bold
$input = preg_replace( '#\[b\](.+?)\[\/b\]#is', '<strong>\\1</strong>', $input ); 
$input = preg_replace( '#\[code\](.*?)\[\/code\]#is',  $this->highlight (  base64_decode ( '\\1' )  ) , $input ); 
?>

Bedankt!

[Laatst bewerkt door Basjee op vrijdag 20 juli 2007, om 19:34]
HyperTesia
Webdeveloper
Geplaatst op: 20 Jul 2007, 19:27
PimpCoins: 0
💸+
Bewerken Quote

Je moet eerst alles in een hash zetten en dan weer omzetten, was hier al eens topic over.. Maar je returned weer met [*code] wat je dus niet moet doen, je moet met iets anders returnen

Basjee
Octo
Geplaatst op: 20 Jul 2007, 19:32
PimpCoins: 0
💸+
Bewerken Quote

HyperTesia schreef:

Je moet eerst alles in een hash zetten en dan weer omzetten, was hier al eens topic over.. Maar je returned weer met [*code] wat je dus niet moet doen, je moet met iets anders returnen

Je praat je zelf een beetje in de knoop.
Ik return [*code] weer omdat hij die later weer moet herkennen!

HyperTesia
Webdeveloper
Geplaatst op: 20 Jul 2007, 19:36
PimpCoins: 0
💸+
Bewerken Quote

ik praat me niet in de knoop je moet bv returenen op [showcode] ofzo en dan maak je daar een preg replace van die naar een functie verwijst waar die alles gedecode echo'd

Spoiler 😨 (selecteer om te bekijken)

Ik praat me in de knoop zegt hij dan

[Laatst bewerkt door HyperTesia op vrijdag 20 juli 2007, om 19:36]
Basjee
Octo
Geplaatst op: 20 Jul 2007, 19:45
PimpCoins: 0
💸+
Bewerken Quote

Ja ik kwam ff nergens anders op .

Ik ga dat proberen wat je zegt..

Maar USBWebserver werkt niet meer:
Ik moet MySql aanzetten, weet iemand hoe ik dit doe?\

Hm, ik heb hier geen mysql voor nodig . Als iemand tocht weet hoe je het aanzet, is het altijd welkom..

1
$input = preg_replace( '#\[showcode\](.*?)\[\/showcode\]#is',  '\\1'  , $input );

Hij returnt nu de base64_encode.

Maar als ik $this-> higlight(); eromheen zet gaat het fout..

[Laatst bewerkt door Basjee op vrijdag 20 juli 2007, om 19:58]
HyperTesia
Webdeveloper
Geplaatst op: 20 Jul 2007, 20:03
PimpCoins: 0
💸+
Bewerken Quote

waarom moet je $this->highlight doen?:s je kan toch gewoon highlight gebruiken?

Basjee
Octo
Geplaatst op: 20 Jul 2007, 20:11
PimpCoins: 0
💸+
Bewerken Quote

Nee, want in $this->highlight komt ook regelnummering e.d.

📫

Nieuw privébericht

🔥

Registreren


Login