Scoutnet vzw

We connect scouts!
Het is momenteel 18 Nov 2024 9:22

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 11 berichten ] 
Auteur Bericht
BerichtGeplaatst: 01 Sep 2003 20:35 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
yo, <BR> <BR>Al men tekst staat, per paragraaf in een database. Ik zou nu willen dat alles in de vorm van {link <a href="http://....}link{/link" target="_blank" target="_new">http://....}link{/link</a>} in die paragrafen vervangen wordt door een link.... <BR>Hij moet dus eerst detecteren of hij die string (die altijd anders is) in de tekst staat, moet die dan vervangen, en moet dat ook meerdere keren per paragraaf kunnen, want er kunnen meerdere links per paragraaf voorkomen. Hoe begin ik daar aan... ? <BR> <BR>alvast bedankt, <BR>wim <BR> <BR>ps: het is dus iets zoals in dit forum waar dat ok gebeurt

_________________
http://www.scoutsboekhoute.be - http://www.65jaar.be - http://www.gja.be - http://www.deschil.be - http://www.nlmeetjesland.be


Omhoog
 Profiel  
 
BerichtGeplaatst: 01 Sep 2003 22:32 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
Dat moet zeker kunnen; alleen weet ik zelf ook niet precies hoe. Misschien kan je het wel even opzoeken door een forum te downloaden dat gebruikt maakt van BBCode (bv. <!-- BBCode Start --><A HREF="http://www.phpbb.com/" TARGET="_blank">www.phpbb.com</A><!-- BBCode End -->), en daar in de code te gaan zoeken hoe ze zo iets fixen. <BR> <BR>Of wachten tot hier iemand met het juiste antwoor komt natuurlijk :-D Ik wil het eigenlijk ook wel weten (dat zou ons voor onze nieuwe site ook aardig uitkomen ;-) ) <BR> <BR>Ciao <BR> <BR>To


Omhoog
 Profiel  
 
BerichtGeplaatst: 01 Sep 2003 23:25 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 30 Jul 2002 23:00
Berichten: 209
Woonplaats: Kortrijk, Gent, Antwerpen
Zoiets moet je maken: <BR> <BR>
Code:
  <BR>$bbcode=eregi_replace("[url]www.([^[]*)[/url]","<a href="http://www.1" target=_blank>1</a>",$bbcode); <BR>  $bbcode=eregi_replace("[url]([^[]*)[/url]","<a href="1" target=_blank>1</a>",$bbcode); <BR>
<BR> <BR>Maar dan even goed nadenken wat er precies zo typerend is aan je links waarop je kan filteren en hoe je weet dat die link voorbij is (spatie bvb). Dan vervang je die 2 kenmerkende stukjes tekst door iets anders. <BR>Functie eregi_replace() en/of aanverwanten (voor strings) gebruiken dus. <BR> <BR>Dit bvb zoekt op http://www.%20of%20zonder%20www%20en en vervangt dat door de html-code voor de links. Eventjes zoeken dus maar niet moeilijk. <BR> <BR>[ Dit bericht is gewijzigd door: Sibbe on 02-09-2003 12:34 ] <BR> <BR>code is code hé, wa maakt da forum daar nu van... <BR>Soit.<BR><BR>[ Dit bericht is gewijzigd door: Sibbe on 02-09-2003 12:36 ]

_________________
12e jeugdwerksite van 2004
11e jeugdwerksite van 2005


Omhoog
 Profiel  
 
BerichtGeplaatst: 03 Sep 2003 11:22 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
<!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE> <BR>ik heb, via een database, een array gemaakt met daar al men links in. Deze array roep ik op aan de hand van bijvoorbeeld $link[kapoenen] <BR>Nu wil ik dus dat hij overal in de tekst [link]kapoenen[/link] vervangt door een link die hij haalt uit de database (uit die array dus). Dus het woord ´kapoenen´ is hier een variabele, want ik kan evengoed gastenboek, welpen,... oproepen. <BR>Waarschijnlijk kan dit ook met de eregi-replace function, maar deze is me nog niet volledig duidelijk. <BR>Wat wordt bijvoorbeeld bedoeld met {2,4} in zo een functie, hoe kom ik op iets in de zin van (/|()|((/[0-9a-z~]+), wanneer gebruik ik ^,.... <BR>Op php.net is niet echt veel informatie te vinden over deze functie <BR></PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End -->

_________________
http://www.scoutsboekhoute.be - http://www.65jaar.be - http://www.gja.be - http://www.deschil.be - http://www.nlmeetjesland.be


Omhoog
 Profiel  
 
BerichtGeplaatst: 03 Sep 2003 13:35 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 20 Sep 2002 23:00
Berichten: 166
In zulke gevallen gebruik ik meestal perl die bekend staan om hun regexen (regular expression ==>patronen herkennen) <BR> <BR>Ik denk dat de manier van regexen opstellen hetzelfde is in php en perl ==> hier een kleine inleiding: <BR> <BR>{2,4} wil zeggen minstens 2 en maximum 4 <BR> <BR>vb <BR>bo{2,4} zal zowel boo, booo als boooo toelaten maar niet bo of booooooooooooo <BR>wil je enkele letters herhalen dan gebruik je haken <BR> <BR>(bo){2,4} zal bobo tot bobobo en bobobobo toelaten <BR> <BR>(/|()|((/[0-9a-z~]+) zijn speciale karakters die je kan gebruiken om je regex wat korter te maken <BR> <BR>vb a-zA-Z zal alle letters matchen <BR> <BR>0-9 zal alle cijfers matchen. <BR> <BR>* + ? *? behoren net als {4} en {2,4} tot de quantifiers dus bepalen de hoeveelheid tekens die moeten voorkomen voor aan het patroon voldaan wordt. <BR> <BR>Een regex zo cryptisch neerschrijven is wel leuk maar zal de leesbaarheid van het geheel wel verminderen. <BR> <BR> <BR>Bij het vertalen van die link naar zijn url maak je gebruik van arrays. Kan php geen gebruik maken van een Hash? <BR> <BR>een hash is een bijzondere array <BR>vb <BR><!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE> <BR>%takken = ( <BR> "kapoenen" => "http://www.groep.be/kapoenen" <BR> "welpen" => "http://www.groep.be/welpen" <BR> "jong_verkenners" => "http://www.groep.be/jv" <BR> "verkenners" => "http://www.groep.be/vk" <BR> "leiding" => "http://www.groep.be/leiding" <BR> <BR>); <BR></PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End --> <BR>als je dan in perl <BR>$takken{"kapoenen"} aanspreekt bekom je <a href="http://www.groep.be/kapoenen" target="_blank" target="_new">http://www.groep.be/kapoenen</a> <BR> <BR>php zal die mogelijkheid ook wel bezitten. Dus dat omzetten van die namen naar de links kan niet zo ingewikkeld zijn denk ik. <BR> <BR> <BR> <BR> <BR> <BR> <BR> <BR>


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Sep 2003 2:01 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
<!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE> <BR>Pfffffff (hier volgt een diepe zucht...) <BR>(1) Het lukt me om een array te maken, <BR>deze links haalt hij een de database, de kapoenenlink kan je dan bijvoorbeeld oproepen met de array $link[kapoenen], <BR>de welpen door $link[welpen] enzoverder. Dit levert geen problemen meer op. <BR>(2) Het lukt me ook om met de functie eregi_replace() bepaalde zaken te veranderen: <BR> <BR>$tekst = "dit is een test: [LINK]kapoenen[/LINK] en zijn er ook [LINK]welpen[/LINK]"; <BR>$tekst = eregi_replace("\[LINK\]([^[]*)\[/LINK\]", "\1" ,$tekst); <BR>print ("$tekst"); <BR> <BR>levert: <BR> <BR>dit is een test: kapoenen en zijn er ook welpen <BR> <BR>(3)Maar nu is de vraag, hoe combineer ik die twee, ik had iets geprobeerd om de "1" te veranderen door $link["1"] maar dat werkt blijkbaar niet, en ik heb nog vanalles geprobeerd door het aanpassen van , , ", ´, ... maar....helaas <BR> <BR>ik wil dus eigenlijk als resultaat: <BR> <BR>dit is een test: <!-- BBCode Start --><A HREF="http://www.bla.bla" TARGET="_blank">kapoenen</A><!-- BBCode End --> en er zijn ook <!-- BBCode Start --><A HREF="http://www.bla.bla" TARGET="_blank">welpen</A><!-- BBCode End --> <BR> <BR>wie kan mij helpen?? <BR>alvast bedankt voor alle vorige informatie <BR></PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End --><BR><BR>[ Dit bericht is gewijzigd door: scoutsboekhoute on 04-09-2003 03:03 ]

_________________
http://www.scoutsboekhoute.be - http://www.65jaar.be - http://www.gja.be - http://www.deschil.be - http://www.nlmeetjesland.be


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Sep 2003 2:06 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
die ene backlashes moeten er twee worden (in de eregi_replace functie), en de br tags moeten weg... <BR>het forum doet blijkbaar ook niet alles correct <BR> <BR> ;-) <BR><BR>[ Dit bericht is gewijzigd door: scoutsboekhoute on 04-09-2003 03:07 ]

_________________
http://www.scoutsboekhoute.be - http://www.65jaar.be - http://www.gja.be - http://www.deschil.be - http://www.nlmeetjesland.be


Omhoog
 Profiel  
 
BerichtGeplaatst: 08 Sep 2003 12:12 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
niemand... ? :-[

_________________
http://www.scoutsboekhoute.be - http://www.65jaar.be - http://www.gja.be - http://www.deschil.be - http://www.nlmeetjesland.be


Omhoog
 Profiel  
 
BerichtGeplaatst: 08 Sep 2003 20:47 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 20 Sep 2002 23:00
Berichten: 166
toch wel iemand. <BR> <BR>Ik heb ook eens geprobeerd om dat probleempje op te lossen en dat is hetgeen ik bekom: <BR> <BR><!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE> <BR><?php <BR> $string= "dit is een test: [LINK]kapoenen[/LINK] en er zijn ook [LINK]welpen[/LINK]"; <BR> print "de oorspronkelijke string <br>"; <BR> print "$stringn <br>"; <BR> <BR> $link = array ("kapoenen"=> "echte kapoenenlink","welpen"=> "echte welpenlink"); <BR> $array_keys = array_keys($link); <BR> for ($i=0; $array_keys[$i] ; $i++){ <BR> <BR> print "de key is $last_key <br> *************************************** <br>"; <BR> $string = ereg_replace ("[LINK]$array_keys[$i][/LINK]", $link[$array_keys[$i]], $string); <BR> print "$stringn <br>"; <BR> } <BR>?> <BR> <BR></PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End --> <BR> <BR>Als je dit zou testen zou dit het volgende doen: <BR> <BR><!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE> <BR> <BR>de oorspronkelijke string <BR>dit is een test: [LINK]kapoenen[/LINK] en er zijn ook [LINK]welpen[/LINK] <BR>de key is kapoenen <BR>****************************************** <BR>dit is een test: echte kapoenenlink en er zijn ook [LINK]welpen[/LINK] <BR>de key is welpen <BR>****************************************** <BR>dit is een test: echte kapoenenlink en er zijn ook echte welpenlink <BR></PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End --> <BR> <BR>De array link is wat men bij perl een hash noemt ==> bestaat uit een key en een bijhorende waarde. <BR> <BR>We gaan de tekst door een loop sturen en testen of aan de regex is voldaan: <BR>[LINK]$array_keys[$i][/LINK]" <BR> <BR>Omdat we telkens maar één deel van de regex kunnen nagaan <BR>vb [link]kapoenen[/link] maken we gebruik van een for loop die alle mogelijkheden uit de array nagaat. <BR> <BR>Ik denk dat dit hetgene was wat je wou bereiken. <BR> <BR>


Omhoog
 Profiel  
 
BerichtGeplaatst: 08 Sep 2003 22:21 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
ok, heel erg bedankt !!!

_________________
http://www.scoutsboekhoute.be - http://www.65jaar.be - http://www.gja.be - http://www.deschil.be - http://www.nlmeetjesland.be


Omhoog
 Profiel  
 
BerichtGeplaatst: 08 Sep 2003 23:03 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 20 Sep 2002 23:00
Berichten: 166
Het nadeel van mijn voorbeeld is dat je al de tekst X keer door die ereg_replace pompt. <BR> <BR>Ik denk niet dat de server dat gaat voelen maar het zou beter zijn om je tekst die zich in 1 string bevindt op te splitsen in zinnen. en deze zinnen door een regex te sturen. Als een [link]tekst[/link] wordt gevonden dan pas de ereg_replace loop uit te voeren. Je zou eens een benchmark van beide methoden kunnen uitvoeren om te kijken welk het snelste gaat. <BR> <BR>via microtime() kan je de tijd opmeten dus: <BR>verschil= tijd_na- tijd_voor en kijken of het tijdsverschil tussen beide methoden echt merkbaar is. <BR>


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 11 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
cron
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.