nl2br() voorkomen bij <pre>

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen Bokern

Koen Bokern

03/05/2007 15:20:00
Quote Anchor link
Hallo,

Ik ben bezig met een forum met een UBB parser. Deze werkt al perfect. Wanneer men een bericht post wordt dit als UBB opgeslagen in de database.

Bij het weergeven van dit bericht wordt het pas geparsed, en wordt de functie nl2br() toegepast. Wanneer men de UBB tag [\code\] [\/code\] toepast, wordt dit geparsed naar de innerHTML <pre><code> </code></pre>. Aangezien dat je bij <pre> geen nl2br() nodig hebt, krijg je dubbele enters.

Is er hier een goede oplossing voor?
Gewijzigd op 01/01/1970 01:00:00 door Koen Bokern
 
PHP hulp

PHP hulp

18/11/2024 05:30:29
 
Jurgen assaasas

Jurgen assaasas

03/05/2007 15:24:00
Quote Anchor link
geen <pre> gebruiken...
 
Robert Deiman

Robert Deiman

03/05/2007 15:28:00
Quote Anchor link
Dit moet je met regex doen, daar ben ik nog niet zo bekend mee, maar daarmee kan je alles ophalen wat tussen en staat. Daar zou je br2nl() kunnen gebruiken, maar ik denk dat er nog een handigere oplossing mogelijk moet zijn.
 
Niek s

niek s

03/05/2007 16:03:00
Quote Anchor link
Robert: voor zo ver ik weet, bestaat de functie br2nl() niet...
 
Jurgen assaasas

Jurgen assaasas

03/05/2007 16:05:00
Quote Anchor link
Misschien werkt dit?

str_replace('<br><br>', '<br>', $veld);
 
Robert Deiman

Robert Deiman

03/05/2007 16:07:00
Quote Anchor link
Was vergeten dit mee te posten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
function br2nl($text)
{

    return  preg_replace('/<br\\\\s*?\\/??>
/i', "\\n", $text);
}
?>
 
Mebus  Hackintosh

Mebus Hackintosh

03/05/2007 16:11:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

function br2nl($tekst) {

    return preg_replace('/<br.*\/>/i', "\n");

}


?>


http://www.willempen.org/reguliere-expressies
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
 
Niek s

niek s

03/05/2007 16:14:00
Quote Anchor link
gaat iets fout met de highlight :)
 
Hipska BE

Hipska BE

03/05/2007 16:17:00
Quote Anchor link
dit al geprobeerd: Uitgebreide UBB class ?
 
Koen Bokern

Koen Bokern

03/05/2007 16:47:00
Quote Anchor link
Oke mensen, bedankt. Ik ga kijken wat ik hiermee doe. De uitgebreide UBB class is leuk, maar het is nog leuker als ik de boel begrijp. En het is nu eenmaal makkelijk om de boel te begrijpen, wanneer je het script zelf schrijft. Al is dat met de nodige hulp.

Ik de functie br2nl proberen :)

Big edit:

Het werkt dus niet helemaal, althans, ik weet niet hoe ik het erin moet gooien

Het zier er nu zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php




function br2nl($tekst) {

    return preg_replace('/<br.*\/>/i', "\n", $tekst);

}


// Hieruit wordt alle UBB omgezet
//$pagina     = $_POST['pagina'];
//$pagina     = htmlspecialchars($pagina);
//$pagina      = nl2br($pagina);

// Deze array zoekt de UBB codes

$find              = array( // UBB
                        '#\[b\](.*?)\[/b\]#si',
                        '#\[u\](.*?)\[/u\]#si',
                        '#\[i\](.*?)\[/i\]#si',
                        '#\[CODE\](.*?)\[/CODE\]#si',
                        '#\[url=(.*?)\](.*?)\[/url]#si',
                        '#\[img \#left\](.*?)\[/img\]#',  
                                                '#\[img\](.*?)\[/img\]#',
                                                '#\[clear\]#',
                        '#\[quote=(.*?)\](.*)\[/quote\]#'
                        );
                        

// Deze array bevat alles waardoor de UBB wordt vervangen                    
$replace = array
('<b>\\1</b>',
 '<u>\\1</u>',
 '<i>\\1</i>',
 '<pre><code><?php $code = " ?>\\1<?php ";  $code2 = br2nl($code); ?></code></pre>',
'<a href="\\1">\\2</a>',
'<a href="\\1" border="0"><img border="0" src="\\1" title="image" alt="image" width="150" height="150" align="left" /></a>',
'<a href="\\1" border="0"><img border="0" src="\\1" title="image" alt="image" width="150" height="150" /></a>',
'<br clear="all">',
'<div class="quote_head">quoting: \\1</div><div class="quote">\\2</div>'
);
?>


En dan roep ik het aan met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
include("UBB.php");
$page = preg_replace($find, $replace, $page);
?>


Hoe moet ik br2nl() dan toepassen?
Gewijzigd op 01/01/1970 01:00:00 door Koen Bokern
 
Koen Bokern

Koen Bokern

03/05/2007 23:14:00
Quote Anchor link
Toch maar jouw UBB class geprobeerd :) super script... nice:)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.