Versio

maken van eerste ubb systeem

Overzicht Reageren

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

25/05/2012 08:43:43
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Joren de Wit
Beheerder

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
Beheerder

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
Beheerder

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
Beheerder

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
Beheerder

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
Beheerder

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