maken van eerste ubb systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Iltar van der berg

iltar van der berg

30/06/2007 14:47:00
Quote Anchor link
Ik ben bezig met mn eigen ubb systeempje, ik heb nu enige kennis van regex met preg_*.

Ik loop nu een beetje vast.

Ik heb nu hetvolgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

function ubbpage($content)
{

    nl2br($content);
    $content = preg_replace("/\[[bB]\](.*?)\[\/[bB]\]/", "<strong>$1</strong>", $content);
    $content = preg_replace("/\[[iI]\](.*?)\[\/[iI]\]/", "<em>$1</em>", $content);
    return $content;
}


?>


Maar als ik dit doe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$content
= '
<br />Dit is een [i] bold tag.
<br />[b] Dit [/b] [/i] ook.'
;

echo ubbpage($content);
?>

Zoals je denkt zou bold tag. Dit allemaal italic moeten worden, en Dit Bold/italic.

Maar de output is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Dit is een [i] bold tag.
Dit [/i] ook.


Alleen Dit word bold, en hij negeerd de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
[i][/i]
.
Hoe fix ik dat?
 
PHP hulp

PHP hulp

15/11/2019 21:06:25
 
Joren de Wit

Joren de Wit

30/06/2007 15:06:00
Quote Anchor link
Dat komt omdat [/i] op een nieuwe regel in je script staat. Voeg even de pattermodifiers 's' aan je regex toe en het probleem is opgelost:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"/\[[bB]\](.*?)\[\/[bB]\]/s"

En nog netter is het om ook de patter modifier 'i' te gebruiken, dan wordt je regex namelijk case-insensitive:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"/\[b\](.*?)\[\/b\]/si"
 
Iltar van der berg

iltar van der berg

30/06/2007 15:20:00
Quote Anchor link
Ah zit wat in bedankt!

Nog een vraag: ik ben meteen ook bezig met een link=.
$content = preg_replace("/\[link=(.*?)\](.*?)\[\/link\]/", "<a href=\"$1\" target=\"_blank\">$2</a>", $content);

opich werkt dit prima.

Maar nu kunnen mensen ook javascript uitvoeren in de link. Hoe zorg je dat hij dan zorgt dat er adressen in kunnen staan als

http://www.adres.nl
en
www.adres.nl
adres.nl

maar ook:
[link]http:// of www. of adres.nl[/link]

of desnoods met een plaatje erin, b tags what ever.
 
Joren de Wit

Joren de Wit

30/06/2007 15:29:00
Quote Anchor link
Je zou eerst met preg_match kunnen controleren of er geen : in de link voorkomt, en vervolgens pas een preg_replace toepassen. De : is immers nodig als je javascript in een <a> tag op wilt nemen.
 
Iltar van der berg

iltar van der berg

30/06/2007 15:31:00
Quote Anchor link
Ja, dat zou kunnen, nu loop ik ook nog eens tegen dit aan:

$content .= '[link=http://www.infernogm.com]infernogm[/link]<br />';
$content .= '[link=http://www.infernogm.com]infernogm[/link]<br />';

Dit verkl**t de link behoorlijk..

Hoe zorg ik ervoor dat hij dan alles wat met [] en[/] staat in de [link=] of [link][/link] eruit gefilterd word?
 
Iltar van der berg

iltar van der berg

30/06/2007 15:31:00
Quote Anchor link
iltar van der berg schreef op 30.06.2007 15:31:
Ja, dat zou kunnen, nu loop ik ook nog eens tegen dit aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$content .= '[link=[b]http://www.infernogm.com]infernogm[/link]<br />';
$content .= '[link=[b]http://www.infernogm.com[/b]]infernogm[/link]<br />';

Dit verkl**t de link behoorlijk..

Hoe zorg ik ervoor dat hij dan alles wat met [] en[/] staat in de [link=] of [link][/link] eruit gefilterd word?[/quote]
 
Joren de Wit

Joren de Wit

30/06/2007 15:38:00
Quote Anchor link
Wederom zou je, zodra je gecontstateerd hebt dat je met een [link] te maken hebt, met preg_match kunnen controleren of deze wel aan het vereiste formaat voldoet. Zo niet, dit formaat aanpassen met preg_replace en dan vervolgens je [link] preg_replace erop loslaten.
 
Iltar van der berg

iltar van der berg

30/06/2007 15:40:00
Quote Anchor link
Lijkt me duidelijk, bedankt !

Onhandig forum hierzo :S
 
Iltar van der berg

iltar van der berg

30/06/2007 15:57:00
Quote Anchor link
if(!preg_match("/\[link\](\[(.*?)\]||\[\/(.*?)\])\[\/link\]/",$content))
{
$content = preg_replace("/\[link\](.*?)\[\/link\]/si", "<a href=\"$1\" target=\"_blank\">$1</a>", $content);
}

Dit laat nog steeds hetvolgende toe:
$content .= '[link][bold tag]http://www.infernogm.com[/link]';

ik kijk nu op [link] ([(alles)] of [/(alles)]) [/link] (als het goed is)

Hoe kan het dat hij dan de bovenstaande link alsnog door laat?
Gewijzigd op 01/01/1970 01:00:00 door iltar van der berg
 
Joren de Wit

Joren de Wit

30/06/2007 16:17:00
Quote Anchor link
Ik zou eerder controleren of in mijn opgegeven link geen ongeldige tekens voorkomen, of andersom: alleen maar geldigde tekens.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_match("#\[link\]([a-z0-9:\?\.&/]*)\[/link\]#is",$content)
?>


ps. Gebruik de [ignore][/ignore] tags als je bbcode hier op het forum wilt weergeven zonder dat het geparsed wordt.
 
Iltar van der berg

iltar van der berg

30/06/2007 16:23:00
Quote Anchor link
Hm ignore... lastig...
Ben het forum van phpfreakz gewent, simpel en makkelijk ;)

Zit wat in trouwens, ik zit maar moeilijk te doen, terwijl het ook zo kan, moet dan alleen niet die : eruit?
 
Joren de Wit

Joren de Wit

30/06/2007 16:25:00
Quote Anchor link
http://www.website.com

Ik zie hier een : in staan ;)
 
Jurgen assaasas

Jurgen assaasas

30/06/2007 16:25:00
Quote Anchor link
of gewoon addslashes gebruiken.
 
Joren de Wit

Joren de Wit

30/06/2007 16:30:00
Quote Anchor link
Jurgen schreef op 30.06.2007 16:25:
of gewoon addslashes gebruiken.
En hoe zou dat in dit geval helpen volgens jou?
 
Iltar van der berg

iltar van der berg

30/06/2007 16:30:00
Quote Anchor link
hoezo addslashes??

ik kan nu gewoon doen;

[link]javascript:alert(\'hallo\')[/link]

hoe zorg je daar dan voor?

krijg je dan niet problemen dat alles er zo uitkomt:

piet\'s fiets
Gewijzigd op 01/01/1970 01:00:00 door iltar van der berg
 
Jurgen assaasas

Jurgen assaasas

30/06/2007 16:45:00
Quote Anchor link
Je doet alleen addslashes op de link
 
Iltar van der berg

iltar van der berg

30/06/2007 16:47:00
Quote Anchor link
Ik zal even kijken of er dan een gewenst resultaat op komt.
Edit:

Hm ongeveer wel..
Alleen word het nogsteeds een link. ik heb dan liever dat hij toont:
[link]javascript:alert(\'hallo\')[/link]

in plaats van er alsnog een link van te maken.
hoe moet dat dan?
Gewijzigd op 01/01/1970 01:00:00 door iltar van der berg
 



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.