Hulp bij BB-Codes

Gestart doorEleky16 reacties50 weergaven

17 berichten · pagina 1 van 2

Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik heb devolgende regel:

[COLOR= #0000BB]<?php $tekst[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/preg_replace"]preg_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]#[code](.*?)[/code]#[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]<div style="background-color:#cccccc;">[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/highlight_string"]highlight_string[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"\1"[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]</div>[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$tekst[/COLOR][COLOR= #007700]);[/COLOR] ?>


Alleen nu heb ik het probleem dat dit niet werkt!
Bovenaan staat nu altijd ineens 1, en als ik bijv. dit in een bericht doe:

[-code][-/code] (maar dan zonder streepjes)

Staat daar 1...
0
Berichten
10.409
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
.highlight_string("1").</div>


Dat moet je dan veranderen,
0
Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kingunit schreef:
.highlight_string("1").</div>
Dat moet je dan veranderen,

No Shit Sherlock
nee maar daar was ik ook al achter, alleen weet niet wat ik verkeer doe...
0
Berichten
10.409
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
preg_replace(#[u](.+?)[/u]#si, <u>1</u>, $string);
0
Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kingunit schreef:
preg_replace(#[u](.+?)[/u]#si, <u>1</u>, $string);
??
Wat houd dit in?
DIt heb ik al, het gaat specifiek om die code die ik heb gegeven
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
"" weghalen?
0
Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
heb ik al gedaan
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
[COLOR= #0000BB]<?php
$tekst[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/preg_replace"]preg_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"#[code](.*?)[/code]#"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]<div style="background-color:#cccccc;">[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #DD0000]"highlight_string(1)"[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #DD0000]</div>[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$tekst[/COLOR][COLOR= #007700]);[/COLOR]
?>


Niet zeker of het werkt
0
Berichten
13.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
ik zag ergens dat het zoiets moest:

$code = preg_match("#[code](.*?)[/code]#", $tekst);
$code = highlight_code($code);
$tekst= preg_replace("#[code](.*?)[/code]#", <div style="background-color:#cccccc;"> .$code. </div>, $tekst);


maar dat werkt maar met 1 code tag denk ik yummie
0
Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kom er nog niet uit...
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
highlight_string() moet je een 2e parameter meegeven, namelijk of hij direct het resultaat moet weergeven of niet.
Maak dit er eens van:

[COLOR= #0000BB]<?php $tekst[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/preg_replace"]preg_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]#[code](.*?)[/code]#[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]<div style="background-color:#cccccc;">[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/highlight_string"]highlight_string[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"1"[/COLOR][COLOR= #007700],[/COLOR] TRUE[COLOR= #007700]).[/COLOR][COLOR= #DD0000]</div>[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$tekst[/COLOR][COLOR= #007700]);[/COLOR] ?>


maar dan issie nog steeds raar denk?

edit:
zo werkt ie:

[COLOR= #0000BB]<?php
$tekst[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]lalala [code]<?php phpinfo(); ?>[/code] tralalala[/COLOR][COLOR= #007700];

function[/COLOR] highlight_code[COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #DD0000]<div style="background-color:#cccccc;">[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/highlight_string"]highlight_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$string[/COLOR][COLOR= #007700],[/COLOR] TRUE[COLOR= #007700]).[/COLOR][COLOR= #DD0000]</div>[/COLOR][COLOR= #007700];
    
}[/COLOR]

[COLOR= #0000BB]$tekst[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/preg_replace"]preg_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]#[code](.*?)[/code]#e[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]highlight_code("1")[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$tekst[/COLOR][COLOR= #007700]);[/COLOR]

[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$tekst[/COLOR][COLOR= #007700];[/COLOR]


maar ik zit ff te denken of het zo wel veilig is, aangezien hij nu wel je code evalt, maar volgens mij zit dat wel goed...
0
Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Werkt eindelijk!
Dankje!
Maar een vraag: ik merk dat het zonder die e achter # niet werkt, waarom niet?
Wat houd die e in?

Er zijn nu nog 2 dingen die niet werken:
1. ik kan niet op meerdere regels..., dus
[-code]?>[-/code]
werkt niet!
2. Hij highlight alles nu mooi, alleen om een of andere rede pakt hij varibalen nog niet...
Als ik: [-code][-/code] doe krijg ik dit:

[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/echo"]echo[/URL]  [COLOR= #007700];[/COLOR] ?>


Is hier iest tegen te doen?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Die e zorgt er voor dat de waarde uit je 2e argument (dus die highlight_code() functie) wordt uitgevoerd. Als je die weglaat krijg je gewoon highlight_code("1") te zien, maar je wilt dat dat uitgevoerd wordt, dus vandaar die e. smile
Als je regel 11 verandert in dit:
$tekst = preg_replace(#[code](.*?)[/code]#e, "highlight_code(1)", $tekst);


dan is je punt 2 opgelost. Je zit dan nog wel met die meerdere regels, maar dat weet ik ook zo snel niet. redface
0
Eleky

Lid · Topicstarter

Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
De problemen zijn opgelost!
Met dank aan Lennard en google, ik had verkeerd gezogdconfusedIk moest zoeken op preg_replace multiple lines ipv in het nederlandsbiggrinMaargoed, dit heb ik nu, voor de mensen die het willen weten:

$tekst = preg_replace(#
(.*?)
#es, "highlight_code(1)", $tekst);

Alleen nu heb ik nog 1 probleem (ja ik blijf zeuren)
Highlight_string zet autmatisch brs, alleen gebruik ik ook nl2br voor de rest, nu doet hij het dubbel...
Kan je op nl2br uitzonderingen maken?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Wat je kunt doen is alle code blokken eerst vervangen door een md5-code, en die md5-code samen met de originele code opslaan in een array.
Daarna doe je nl2br(), en daar weer na vervang je de md5-codes weer door die uit de array.

Een andere (minder nette) oplossing is om alle

s te vervangen door één
.

Probeer maar wat, als het niet lukt dan maak ik wel wat voor je. smile
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren