login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Ubb class

Offline jeroenoa - 20/09/2006 15:45
Avatar van jeroenoaOnbekend Ik heb een ubb class gemaakt:

http://www.plaatscode.be/2671/

en ik gebruik de class zo:

http://www.plaatscode.be/2672/

Maar hij doet het niet, weet iemand wat er verkeerd aan is of hoe het beter kan?

23 antwoorden

Gesponsorde links
Offline MechaVore - 20/09/2006 15:49 (laatste wijziging 20/09/2006 15:52)
Avatar van MechaVore Gouden medaille

PHP gevorderde
Regel 11: $this->$text -> $this->text
Offline Simon - 20/09/2006 16:33
Avatar van Simon PHP expert je functie show is de boosdoener
  1. #laten zien
  2. function show ()
  3. {
  4. UbbCodes::woorden();
  5. UbbCodes::tekstopmaak();
  6. UbbCodes::link();
  7. UbbCodes::smilies();
  8. UbbCodes::quote();
  9. UbbCodes::code();
  10. UbbCodes::plaatjes();
  11.  
  12. return $this->text;
  13. }
Offline Rik - 20/09/2006 16:43
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Als ik je code uitvoer krijg ik errors met de regexp.

Met de e modifier weg doet hij het wel, tenminste als je dat wat MechaVore zegt ook verandert.
Offline jeroenoa - 21/09/2006 12:40 (laatste wijziging 21/09/2006 13:54)
Avatar van jeroenoa Onbekend Ik heb mijn ubb.class veranderd naar dit:

includes/ubb.class.php
  1. <?php
  2.  
  3.  
  4. class UbbCodes
  5. {
  6. #variabelen
  7. var $text;
  8.  
  9. #constructie
  10. function UbbCodes ($text)
  11. {
  12. $this->text = $text;
  13. }
  14.  
  15. #woorden
  16. function woorden ()
  17. {
  18. $this->text = htmlentities($this->text, ENT_QUOTES);
  19.  
  20. $artikel_query = mysql_query("SELECT `id`, `letter`, `woord`, `omschrijving` FROM `woordenboek`") or die (mysql_error());
  21. while($artikel = mysql_fetch_assoc($artikel_query))
  22. {
  23. $this->text = str_replace ( "[?]".$artikel['woord']."[/?]", "<a href=\"../woordenboek/index.php?zoekwoord=".$artikel['woord']."\" style=\"cursor: help;\" title=\"Zoek in het woordenboek naar ".$artikel['woord']."\"><i>".$artikel['woord']."</i></a>", $this->text );
  24. }
  25. }
  26.  
  27. #tekstopmaak
  28. function tekstopmaak ()
  29. {
  30. $this->text = preg_replace ( "_\[b\](.*?)\[/b\]_ise", "<b>\\1</b>", $this->text );
  31. $this->text = preg_replace ( "_\[u\](.*?)\[/u\]_ise", "<u>\\1</u>", $this->text );
  32. $this->text = preg_replace ( "_\[i\](.*?)\[/i\]_ise", "<i>\\1</i>", $this->text );
  33. $this->text = preg_replace ( "_\[s\](.*?)\[/s\]_ise", "<s>\\1</s>", $this->text );
  34. $this->text = preg_replace ( "_\[h1\](.*?)\[/h1\]_ise", "<h1>\\1</h1>", $this->text );
  35. $this->text = preg_replace ( "_\[h2\](.*?)\[/h2\]_ise", "<h2>\\1</h2>", $this->text );
  36. $this->text = preg_replace ( "_\[h3\](.*?)\[/h3\]_ise", "<h3>\\1</h3>", $this->text );
  37. $this->text = preg_replace ( "_\[h4\](.*?)\[/h4\]_ise", "<h4>\\1</h4>", $this->text );
  38. }
  39.  
  40. #link
  41. function link ()
  42. {
  43. $this->text = eregi_replace ( "\[url\]www.([^\[]*)","<a href=\"http://www.\\1\" target=_blank>\\1", $this->text );
  44. $this->text = eregi_replace ( "\[url\]([^\[]*)","<a href=\"\\1\" target=_blank>\\1", $this->text );
  45. $this->text = eregi_replace ( "(\[url=)([A-Za-z0-9_~&=;\?:%@#./\-]+[A-Za-z0-9/])(\])", "<a href=\"http://\\2\" target=_blank>", $this->text );
  46. $this->text = eregi_replace ( "\[url](http://(.*))", "<a href=\"\\1\" target=\"_blank\">\\1", $this->text );
  47. $this->text = eregi_replace ( "(\[/url\])", "</a>", $this->text );
  48. $this->text = eregi_replace ( "http://http://", "http://", $this->text );
  49. }
  50.  
  51. #smilies
  52. function smilies ()
  53. {
  54. $this->text = str_replace ( ":)", "<img src=\"../../afbeeldingen/lach.gif\">", $this->text );
  55. $this->text = str_replace ( ":-)", "<img src=\"../../afbeeldingen/lach.gif\">", $this->text );
  56. $this->text = str_replace ( ":P", "<img src=\"../../afbeeldingen/tong.gif\">", $this->text );
  57. $this->text = str_replace ( ":-P", "<img src=\"../../afbeeldingen/tong.gif\">", $this->text );
  58. $this->text = str_replace ( ":(", "<img src=\"../../afbeeldingen/droevig.gif\">", $this->text );
  59. $this->text = str_replace ( ":-(", "<img src=\"../../afbeeldingen/droevig.gif\">", $this->text );
  60. $this->text = str_replace ( ":D", "<img src=\"../../afbeeldingen/blij.gif\">", $this->text );
  61. $this->text = str_replace ( ":-D", "<img src=\"../../afbeeldingen/blij.gif\">", $this->text );
  62. }
  63.  
  64. #quote
  65. function quote ()
  66. {
  67. $this->text = preg_replace ( "_\[quote\](.*?)\[/quote\]_ise", "<table width=\"80%\"><tr><td>QUOTE:</td><td>\\1</td></tr></table>", $this->text );
  68. }
  69.  
  70. #code
  71. function code ()
  72. {
  73. $this->text = preg_replace ( "_\[code\](.*?)\[/code\]_ise", "<table width=\"80%\"><tr><td>CODE:</td><td>\\1</td></tr></table>", $this->text );
  74. }
  75.  
  76. #plaatjes
  77. function plaatjes ()
  78. {
  79. $this->text = preg_replace ( "_\[img\](.*?)\[/img\]_ise", "<img src=\"\\1\" />", $this->text );
  80. }
  81.  
  82. #laten zien
  83. function show ()
  84. {
  85. UbbCodes::woorden();
  86. UbbCodes::tekstopmaak();
  87. UbbCodes::link();
  88. UbbCodes::smilies();
  89. UbbCodes::quote();
  90. UbbCodes::code();
  91. UbbCodes::plaatjes();
  92.  
  93. return $this->text;
  94. }
  95.  
  96. }
  97.  
  98. ?>


En ik roep hem zo aan:

  1. <?php
  2.  
  3. include ("includes/ubb.class.php");
  4. include ("includes/config.inc.php");
  5.  
  6.  
  7. $text = "Dit wordt de quote [quote]Hallo dit is een quote van mij[/quote] Dit is een code [";
  8. $procesText = new UbbCodes($text);
  9. $newText = $procesText->show();
  10.  
  11. echo $newText;
  12.  
  13. include ("includes/footer.inc.php");
  14.  
  15. ?>


Maar hij geeft dan alleen een leeg scherm.

(Sorry voor de code maar er is iets mis met plaatscode.be
Offline Thomas - 21/09/2006 12:42
Avatar van Thomas Moderator $this->$text -> $this->text;

lol
met -> bedoelde MechaVore "moet worden".
Offline jeroenoa - 21/09/2006 12:45 (laatste wijziging 21/09/2006 13:55)
Avatar van jeroenoa Onbekend Ik heb de code die hierboven in het topic staat even geupdate en nu geeft hij de volgende fout:

Citaat:
Parse error: parse error in /data/members/free/tripod/nl/o/a/j/oajeroen/htdocs/includes/ubb.class.php(32) : regexp code on line 1

Fatal error: Failed evaluating code: Hallo dit is een quote van mij in /data/members/free/tripod/nl/o/a/j/oajeroen/htdocs/includes/ubb.class.php on line 32
Offline Rik - 21/09/2006 14:49
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
M'n vorige post:
Citaat:
Als ik je code uitvoer krijg ik errors met de regexp.

Met de e modifier weg doet hij het wel, tenminste als je dat wat MechaVore zegt ook verandert.


Een beetje lezen mag ook wel. ;-)
Offline jeroenoa - 21/09/2006 14:52
Avatar van jeroenoa Onbekend
Citaat:
Als ik je code uitvoer krijg ik errors met de regexp.

Met de e modifier weg doet hij het wel, tenminste als je dat wat MechaVore zegt ook verandert.


Ik vind het een beetje een kromme zin daarom snap ik het ook niet. Wat bedoel je precies met "de e modifier"?
Offline Rik - 21/09/2006 15:00 (laatste wijziging 21/09/2006 15:02)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
php.net: pattern modifiers, daar staat:
Citaat:
e

If this modifier is set, preg_replace() does normal substitution of backreferences in the replacement string, evaluates it as PHP code, and uses the result for replacing the search string. Single and double quotes are escaped by backslashes in substituted backreferences.

Only preg_replace() uses this modifier; it is ignored by other PCRE functions.
Maar je gebruikt geen php code in je "replacement string" dus die "e" kan je weg laten.

Edit:
Die e staat bij _ise van regel 31 t/m 38
Offline Gerard - 21/09/2006 15:06
Avatar van Gerard Ouwe rakker In je object roep je functies aan middels ' UbbCodes::woorden();'. Ik weet niet of hij dan wel bewerkingen uitvoert op je huidige $text.....

Misschien dat je er dus beter van kan maken:
$this->woorden();

Daarnaast vind ik je class sowieso niet goed in elkaar steken omdat je voor alles losse functies hebt gemaakt, maar dat er geen mogelijkheid is om aan te geven welke van die functies je over een $text wilt gooien. Dit zou je class namelijk een stuk dynamischer maken en meer functioneel.
Offline Rik - 21/09/2006 15:11
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Een dingetje heb ik volgens mij van je class geleerd: 

Als je een functie met de zelfde naam als de class aan maakt werkt die als __construct in php5. Of niet?
Offline Gerard - 21/09/2006 15:12
Avatar van Gerard Ouwe rakker Ja, dat klopt. Dat is de manier hoe in PHP4 constructors worden gebruikt. Deze methode werkt ook nogsteeds in PHP5 though.
Offline jeroenoa - 21/09/2006 15:29
Avatar van jeroenoa Onbekend Jup hij doet het nu eindelijk! harstikke bedankt (Y)
Offline Gerard - 21/09/2006 15:42
Avatar van Gerard Ouwe rakker @Jeroen

Ga je nu ook nog die zaken veranderen die ik in mijn comment heb gezet? Dat het dus mogelijk wordt om te kiezen welke funties je wel/niet over je input heen gooit?
Offline coda - 21/09/2006 16:46
Avatar van coda HTML beginner Warning: mysql_connect() [function.mysql-connect]: Access denied for user '***'@'localhost' (using password: YES) in /home/joel/domains/plaatscode.be/public_html/config.php on line 2

Warning: mysql_query() [function.mysql-query]: Access denied for user '***'@'localhost' (using password: NO) in /home/joel/domains/plaatscode.be/public_html/index.php on line 60


enz, enz, enz  
Offline Gerard - 21/09/2006 17:36
Avatar van Gerard Ouwe rakker klopt coda, dat is al bekend. Zo snel de beheerder online komt zal hij dit maken.
Offline jeroenoa - 21/09/2006 19:11
Avatar van jeroenoa Onbekend @Proximus: Ja dat is wel handig want ik wil deze ubb.class gebruiken voor mij (om nieuws + artikelen toe te voegen) en voor de bezoekers (om reacties te plaatsen) dan is het wel beter dat als de bezoekers geen headings kunnen kiezen. Dan moet ik dus nog even een aparte functie maken van headings.

Maar hoe kun je de class zo maken dat je kunt kiezen welke functies er door heen worden gehaald?
Offline Gerard - 21/09/2006 19:14
Avatar van Gerard Ouwe rakker Je kan dit oplossen middels verschillende wegen. Je kan (net zoals php error_reporting() werkt) kiezen voor constanten die aangeven wat wel/niet mag.

Je kan ook een string meegeven aan de functie die aangeeft welke zaken wel mogen (gescheiden door een komma).

Je kan ook een array aangeven wat wel mag, elke functie die wel mag is een element van de array.

Je kan ook een functie maken waarbij je stuk voor stuk de zaken toevoegd die mogen.

Er zijn zoveel mogelijke oplossingen voor dit probleem 
Offline jeroenoa - 21/09/2006 19:18
Avatar van jeroenoa Onbekend Hoe kan ik dit dan doen met een array?
Offline Gerard - 21/09/2006 19:20
Avatar van Gerard Ouwe rakker Ik ga je class eens aanpassen op die manier. Geef me even 
Offline jeroenoa - 21/09/2006 19:21
Avatar van jeroenoa Onbekend Oke, hartstikke bedankt. Ik ben nog niet echt bekend met classes 
Offline Gerard - 21/09/2006 19:55 (laatste wijziging 22/09/2006 00:06)
Avatar van Gerard Ouwe rakker Ik post hem zo snel mogelijk, op dit moment ligt mijn internet op zijn bek.

done
class: http://www.pastebin.be/2783/
file: http://www.pastebin.be/2781/
Offline jeroenoa - 22/09/2006 10:29
Avatar van jeroenoa Onbekend Harstikke bedankt Proximus  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s