maken van eerste ubb systeem
Ik loop nu een beetje vast.
Ik heb nu hetvolgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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;
}
?>
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)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$content = '
<br />Dit is een [i] bold tag.
<br />[b] Dit [/b] [/i] ook.';
echo ubbpage($content);
?>
$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:
Alleen Dit word bold, en hij negeerd de .
Hoe fix ik dat?
En nog netter is het om ook de patter modifier 'i' te gebruiken, dan wordt je regex namelijk case-insensitive:
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.
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.
$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 schreef op 30.06.2007 15:31:
Ja, dat zou kunnen, nu loop ik ook nog eens tegen dit aan:
Code (php)
1
2
3
4
5
6
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]
$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]
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.
Onhandig forum hierzo :S
{
$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
ps. Gebruik de [ignore][/ignore] tags als je bbcode hier op het forum wilt weergeven zonder dat het geparsed wordt.
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?
of gewoon addslashes gebruiken.
Jurgen schreef op 30.06.2007 16:25:
En hoe zou dat in dit geval helpen volgens jou?of gewoon addslashes gebruiken.
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
Je doet alleen addslashes op de link
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?
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