Archief - JS of PHP: deel string vervangen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

e4media

Legacy Member
Hoe maak je van deze string:

[LINK=games.telenet.be]Ownatch![/LINK]

dit:

<a href="games.telenet.be">Ownatch!</a>

In de veronderstelling dat je dit meerdere keren moet doen met verschillende waardes ipv. games.telenet.be en ownatch!

Mag in JavaScript of PHP zijn.

killgore

Legacy Member
$tekst = preg_replace("#[LINK=(.*?)](.*?)[/LINK]#is",'<a href="\1">\2</a>',$tekst);

e4media

Legacy Member
k ksnap het, behalve wat de * daar doet (0 or more quantifier staat er als uitleg)

Wat is een quantifier?

DarkBone

Legacy Member
een 'vermenigvuldiger' ofzo :p

Het betekent gewoon dat hetgeen ervoor staat 0 of meer keer kan herhaalt worden.

Correct me if i am wrong :)

e4media

Legacy Member
heb et gevonden

$tekst = preg_replace("#[LINK=(.*?)](.*?)[/LINK]#is",'<a href="\1">\2</a>',$tekst);

gaf nogal iets raars terug, maar met kleine aanpassing:

$tekstt = preg_replace("#\\[LINK=(.*?)\\](.*?)\\[/LINK\\]#is",'<a href="\1">\2</a>',$tekst);

werkt ie wel

Nog een laatste vraagje: wat doet # en #is ?

Toch al bedankt iedereen :)

DarkBone

Legacy Member
Whitespaces worden ge-ignored... moet es kijken, staat ook ergens op 1 van die twee pagina's, maar wordt slechts ergens terloops vermeld.

e4media

Legacy Member
k, maar nog een prob, waarom werkt het omgekeerde niet?

$tekst = preg_replace('#<a href="(.*?)">(.*?)</a>#is',"[link=\1]\2[/link]",$tekst);

nu geeft ie zo vierkantjes weer op de plaats van \1 en \2

Fr3aK

Legacy Member
e4media zei:
k, maar nog een prob, waarom werkt het omgekeerde niet?

$tekst = preg_replace('#<a href="(.*?)">(.*?)</a>#is',"[link=\1]\2[/link]",$tekst);

nu geeft ie zo vierkantjes weer op de plaats van \1 en \2
Voor wa wilt ge omgekeerd gaan werken?
En ik denk dat ge uw quotes moet escapen dus: " wordt \" of \\"
Kben niet zo een fan van reguliere expressies :unsure:

DarkBone

Legacy Member
Waarschijnlijk omdat je de ubb-code nu gaat vervangen voordat je de gegeven opslaat in je database?

Ikzelf ben eerder voorstander van de tekst samen met de ubb-code in de database te steken en slechts bij het afbeelden die ubb-code te gaan parsen.

e4media

Legacy Member
gegevens zitten als html in de database. Ik haal ze eruit en wil ze terug in ubb omzetten om ze te kunnen bewerken

en dat doe ik liever, want ik wil het werken van ubb liefst apart houden van de rest

killgore

Legacy Member
e4media zei:
gaf nogal iets raars terug, maar met kleine aanpassing:

$tekstt = preg_replace("#\\[LINK=(.*?)\\](.*?)\\[/LINK\\]#is",'<a href="\1">\2</a>',$tekst);

werkt ie wel

Nog een laatste vraagje: wat doet # en #is ?
kwas men [ vergeten te escapen :p, ma normaal heb jij een \ teveel ;)

$tekstt = preg_replace("#\[LINK=(.*?)\](.*?)\[/LINK\]#is",'<a href="\1">\2</a>',$tekst);

2) i == hoofdletterongevoelig
s == telt bij dat . ook newlines mee, zonder die s stopt hij bij een newline ;)

sneax

Legacy Member
e4media zei:
gegevens zitten als html in de database. Ik haal ze eruit en wil ze terug in ubb omzetten om ze te kunnen bewerken

en dat doe ik liever, want ik wil het werken van ubb liefst apart houden van de rest

het beste is (ik heb er toch al wa ervaring mee met zo'n dingen) om wat de user ingeeft zo getrouw mogelijk in de database te steken zoals HIJ het ingegeven heeft

en alleen bij output de dingen parsen in de gewenste output
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan