Ik ben mijn ubb script wat aan het uitbreiden en ik zit met een klein probleemje. Ik wil graag bij deze combinatie "@Gebruikersnaam:" de gebruikersnaam vervangen door een link naar hun infopagina. Maar afhankelijk van hun status kies ik de juiste css style voor mijn <a> tag. Dit doe ik doormiddel van een mysql query... Maar, ik krijg nooit een match, ook al weet ik dat de gebruikersnaam bestaat.
Moet ik één of andere conversie uitvoeren alvorens hij zou matchen. Het werk echter wel als ik $gebruikersnaam vervang door gebruikersnaam. (bijvoorbeeld GebruikersnaamOmzetten("Mathieu");)
1) Zou je misschien je [/php] willen vervangen door [/code]?
2) Gebruik geen *, maar selecteer wat je wilt. Dit is overzichtelijker en sneller
3) Gebruik een PHP.net: while loop en PHP.net: mysql_fetch_assoc i.p.v. de array. Dit is namelijk onnodig en kost veel tijd.
4) Gebruik PHP.net: mysql_real_escape_string bij alle variabelen in een query die een string zijn en die aangepast kunnen worden door een gebruiker (superglobals of afgeleide daarvan)
5) Controleren of de query is gelukt moet je als eerst doen met kijken of er geen false is gereturned $deQuery !== 'false' of !$deQuery
6) De match werkt wel gewoon, dus er zit een fout bij het aanroepen van de functie. Ik kan het nu niet uittesten, dus misschien weet een ander het probleem.
1) Ik heb de ubb tag gebruikt bovenaan het veld. Dus als er [/php] ipv [/code] stond dan is dat een bug.
2) / 3) Aangepast, sorry voor de tijdverspilling.
4) Heb dit ook ingevoegd, maar maakte jammer genoeg geen verschil uit.
5) Maakt dat zoveel verschil uit. Ik doe gewoon mysql_num_rows() wanneer dat == aan nul , dan weet ik dat er iets loos is...
6) Het aanroepen van de functie doe ik zoals hierboven aangegeven heb...
Sam - 09/11/2011 23:15 (laatste wijziging 09/11/2011 23:16)
PHP expert
Omdat het zo niet werkt.
Bekijk dit eens: PHP.net: preg_replace_callback Net dezelfde functie, maar in plaats van te replacen door een string wordt de callback functie uitgevoerd.
Je moet voor het aanroepen van een functie preg_replace_callback gebruiken. Ik heb even snel een voorbeeld code gemaakt, die kun je hier vinden: http://snipplr....-ubbparser/
Ik heb nog een opmerking die geen rechtstreeks antwoord is op je vraag, maar toch niet onbelangrijk is.
Zou het geen beter idee zijn om ergens op een globaal niveau een 'cache' op te bouwen, die gebruikersnamen matcht met hun 'output'? Stel dat dezelfde username een aantal keer voorkomt op je pagina, dan zal dat telkens resulteren in een query.
Simpelweg kan dat gewoon een statische klasse zijn die een array gaat bijhouden van gebruikersnamen en de URL naar hun profiel met inbegrip van de opmaak.
Verder stel ik mij de vraag bij de match van gebruikersnaam. Welke tekens zijn allemaal toegestaan in deze namen? Aangezien spaties niet lijken toegestaan, lijkt het mij sterk dat iemand #, ?, &,... kan gebruiken in zijn gebruikersnaam?
@Waldio: Bedankt voor je voorbeeld! Het werkt perfect!
@Maarten: Goeie opmerking, maar uiteindelijk is dat maar een gadget die niet super veel gebruikt word op dezelfde pagina... Dus dat zal nog wel meevallen denk ik.
Maar wat je als laatste aanhaalt is wel van belang. Speciale tekens zijn inderdaad niet toegestaan. Maar ook niet bij het aanmaken van een account. Dus mocht iemand @#*&: invoeren, dan zal dit resulteren in een false bij de query, en wordt er niks afgebeeld. Wat normaal is want zoiets zit niet in de db. Dus er is geen probleem toch?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.