Hoe BB-code voor url?

Status
Niet open voor verdere reacties.

Tha Devil

Moderator
Forumleiding
Moderator
Lid geworden
1 sep 2002
Berichten
16.494
Besturingssysteem
macOS Sequoia
Ik zoek de code die ik moet gebruiken zodat als ik [ url=http://www.iets.com]klik[/url] intyp hij deze html-code geeft: <a href="http://www.iets.com">klik</a>

Ik werk nu met de str_replace voor al mijn andere "wijzigingen" maar ik zou geen idee hebben hoe ik deze moet doen :confused:
 
PHP:
@preg_replace('/[url=(.+)\](.+)\[\/url\]/Usi','<a href="\\1" target="_blank">\\2</a>',$string);
 
Laatst bewerkt:
:8-0:

zo zit het er nu bij mij uit:

PHP:
$bbcode = array (
                    "[b ]"  => "<b>",
                    "[/b ]" => "</b>",
                    "[u ]"  => "<u>",
                    "[/u]" => "</u>",
                    "[i ]"  => "<i>",
                    "[/i]" => "</i>",
                    "[* ]"  => "•",
                    ": D"   => "<img src='images/smiles/biggrinsmiley.gif'>",
                    ":!:"  => "<img src='images/smiles/exclamation.gif'>",
                    ":insane" => "<img src='images/smiles/lmaosmiley.gif'>",
                    ": ("   => "<img src='images/smiles/sadsmiley.gif'>",
                    ": )"   => "<img src='images/smiles/smilingsmiley.gif'>",
                    "(Y)"  => "<img src='images/smiles/thumbsupsmiley.png'>",
                    "(N)"  => "<img src='images/smiles/thumbsdownsmiley.png'>",
                    ":P"   => "<img src='images/smiles/tonguesmiley.gif'>",
                    "[center]" => "<center>",
                    "[/center]" => "</center>",
                    );

$pagina = str_replace(array_keys($bbcode), array_values($bbcode), $checklist);

Stel ik je teleur als ik zeg dat ik van de code die jij gebruikt niets snap?:(

edit: Snel wijzigen he :p maar hoe krijg hem nu in dezelfde "vorm" als de rest?
 
Geplaatst door Tha Devil
edit: Snel wijzigen he :p
:evil::cool:
maar hoe krijg hem nu in dezelfde "vorm" als de rest?
Niet, ik gebruik reguliere expressies, jij niet. Ik ging ervanuit dat jij ook reguliere expressies gebruikte :)

Tip: reguliere expressies gebruiken, zijn veiliger en secuurder dan de string functies. Of je moet een voorgemaakte UBB parser gebruiken (zoek op PEAR naar 'HTML').
 
Oke das duidelijk. Niet mogelijk op de manier zoals ik de rest heb.

Volgende vraag dan maar:

"Hoe moet ik het preg_replace gebruiken?"

Het lijkt mij op dezelfde manier als str_replace

PHP:
preg_replace(array_keys($array), array_values($array), $pagina);

Maar dan zie ik vervolgens in jou voorbeeld allerlei (voor mij) rare codes zoals /usi.

Als ik dan mijn bb-code met preg_replace wil maken moet ik de array dan op deze manier maken?
PHP:
$array = array(

"/[ url=(.+)](.+)[/url]/Usi" => "<a href='\1' target='_blank'> \2</a>",
"/[ b](.+)[/b]/Usi" => "<b>'\ 1'</b>"
);
 
Geplaatst door Tha Devil
Als ik dan mijn bb-code met preg_replace wil maken moet ik de array dan op deze manier maken?
PHP:
$array = array(

"/[ url=(.+)](.+)[/url]/Usi" => "<a href='\1' target='_blank'> \2</a>",
"/[ b](.+)[/b]/Usi" => "<b>'\ 1'</b>"
);
Bijna ! :)
PHP:
$array = array(

"/\[ url=(.+)\](.+)\[\/url\]/Usi" => "<a href='\\1' target='_blank'>\\2</a>",
"/\[ b\](.+)\[\/b\]/Usi" => "<b>\\1</b>"
);
Die U, s en i zijn preg modifiers, Google er op ;)

Ik voeg trouwens als bijlage de UBB parser bij die ikzelf in elkaar geflanst heb. Hij's niet perfect, maar hij werkt best leuk :)
Bestudeer de code maar eens ;)
 

Bijlagen

Laatst bewerkt:
hmm ja ik had dat probleem ook al met die /, maar ik snap nu een beetje hoe het werkt. Ik zal je code eens bestuderen en dan moet ik er vast uitkomen :D

Status: Opgelost :thumb:
 
Kep btw paar edits gedaan, misschien moet je de code opnieuw overnemen :p

Succes :thumb:
 
Geplaatst door JPeetje
Bijna ! :)
PHP:
$array = array(

"/\[ url=(.+)\](.+)\[\/url\]/Usi" => "<a href='\\1' target='_blank'>\\2</a>",
"/\[ b\](.+)\[\/b\]/Usi" => "<b>\\1</b>"
);
Die U, s en i zijn preg modifiers, Google er op ;)

Ik voeg trouwens als bijlage de UBB parser bij die ikzelf in elkaar geflanst heb. Hij's niet perfect, maar hij werkt best leuk :)
Bestudeer de code maar eens ;)

lol nu ik je quote bekijk zie ik wat je hebt gedaan, maar dat terzijde:

Deze code werkte blijkbaar niet (bij mij), kreeg voor elk array item deze melding: Warning: Unknown modifier 'r' in c:\phpdev\www\public\lansite\print.php on line 28

dus heb ik maar de codes gebruik zoals ze in jou script staat dus ipv ", een ' gebruiken en dan meer tekens gebruiken en dat werkt wel
 
Geplaatst door Tha Devil
Deze code werkte blijkbaar niet (bij mij), kreeg voor elk array item deze melding: Warning: Unknown modifier 'r' in c:\phpdev\www\public\lansite\print.php on line 28
Gokje: je hebt de / in '[/url]' niet geëscaped. Alles na die / worden als modifiers gezien.u is een preg modifier, r niet (l ook niet, maar hij stopt bij r al :p).

FF een \ voorzetten dus :)

\[\/url\]
 
Als ik letterlijk deze code gebruik:
"/[ b](.+)[/b]/Usi" => "<b>\1</b>"

Doet hij het niet, maar goed. Je hoeft me niet uit te gaan leggen hoe dat nou komt want ik heb maar besloten jou voorbeeld te volgen qua ubb notatie en die doen het wel (ik had ook niet anders verwacht ;) )

[kan ik hetzelfde doen met bijvoorbeeld smilies?]
 
Geplaatst door Tha Devil
Doet hij het niet, maar goed. Je hoeft me niet uit te gaan leggen hoe dat nou komt want ik heb maar besloten jou voorbeeld te volgen qua ubb notatie en die doen het wel (ik had ook niet anders verwacht ;) )
Je moet [, ] en / escapen met een \ ;)
Maar goed :p
[kan ik hetzelfde doen met bijvoorbeeld smilies?]
Daar kun je beter str_replace() voor gebruiken.
Smilies zitten btw ook in die UBB parser van me :)
 
Kep et gemerkt in je parser.

Maar oke, weet ik dus dat ik daar str_replace moet gebruiken.

Thanx
 
Nou ik kom vast niet met zo'n technisch antwoord maar ik kan het altijd proberen ;)

Omdat str_replace makkelijker met dit soort vervangingen omgaat?
 
Geplaatst door Tha Devil
Omdat str_replace makkelijker met dit soort vervangingen omgaat?
Keur ik half goed :p

Hij gaat er idd makkelijker mee om, hierdoor kan hij de bewerking ook sneller uitvoeren. Een reguliere expressie pakt het moeilijk aan, die doet er langer over. Aangezien een smiley uit aaneenlopende tekens bestaat, hoef je geen moeilijke controle toe te passen, je kan er meteen een simpele vervanger overheen halen :)
 
Laatst bewerkt:
**** weer een onvoldoende :(

Maar goed, thanx voor de les :thumb:

[resultaat zal te zien zijn op Crosswired staan nu alleen nog maar wat plaatjes van de locatie]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan