login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Ubb

Offline thyssimonis - 02/05/2005 01:34 (laatste wijziging 02/05/2005 01:36)
Avatar van thyssimonisPHP interesse Ik zoek ene ubb systeem met
- [code] met rijen die zijn genummerd.
- [page]
- [ quote] met en zonder posted by
- en dit moet ook kunnen:

bericht1:
Citaat:
sdfdsfdsfd
dsfsdfsdfds

bericht2: [quote ][quote ]sdfdsfdsfd[/quote ] dsfsdfsdfds[quote ] dfdsfs

bericht 2 gaat dan fout dan moet het zo worden.
Citaat:
dfs
Citaat:
sad
sadas

19 antwoorden

Gesponsorde links
Offline prorsoft - 02/05/2005 08:25
Avatar van prorsoft PHP gevorderde nog nooit gehoord van ZOEKEN?
http://www.site...amp;cat=17
Offline Dekin - 02/05/2005 12:23
Avatar van Dekin Nieuw lid Ik denk dat je hier wel wat vind:p
Of op Google .
Offline thyssimonis - 02/05/2005 23:23 (laatste wijziging 03/05/2005 02:50)
Avatar van thyssimonis PHP interesse heb ubb systeem, maar zit nog zonder pagine systeem dat je met [page] kan opsplitsen.
En hoe maak dat je maar max  :p  kan
Offline Tuinstoel - 03/05/2005 08:22
Avatar van Tuinstoel PHP expert opsplitsen kan met explode, kzal even wat voor je typen:
  1. <?php
  2. $sTekst = "Pagina 0[page]Pagina 1
  3. [page]Pagina 2";
  4. $aPaginas = explode("[page]",$sTekst);
  5. echo $aPaginas[0];
  6. // Toont de eerste pagina, want arrays beginnen met 0.
  7. ?>

Kijk ook eens rond in de databank hierzo en op andere websites, want er zijn zo ongelovelijk veel ubb parsers.
Offline thyssimonis - 03/05/2005 10:27 (laatste wijziging 03/05/2005 10:31)
Avatar van thyssimonis PHP interesse
  1. <?php
  2. // Voorbeeld van een tekst, haal dit bvb uit database:
  3. $dbtext = 'deel1[page]deel2[page]deel3[page]';
  4.  
  5. // We kappen de tekst in stukken op basis van '[break]'
  6. $dbtext_array = explode('[/page]',$dbtext);
  7.  
  8. // Totaal aantal 'stukken':
  9. $totaal_paginas = sizeof($dbtext_array);
  10.  
  11. // De actieve pagina halen we uit de url:
  12. if (IsSet($_GET['p'])) {
  13. $pagina = $_GET['p'];
  14. }
  15. else {
  16. $pagina = 1;
  17. }
  18.  
  19. // Print de juiste tekst en paginanummer:
  20. echo $dbtext_array[$pagina-1];
  21. echo '<hr />';
  22.  
  23. // Vorige:
  24. if ($pagina > 1) {
  25. echo '<a href="'.$_SERVER['PHP_SELF'].'?p='.($pagina-1).'"><< vorige</a>';
  26. }
  27.  
  28. // Huidige:
  29. echo ' | Dit is pagina '.$pagina.' van '.$totaal_paginas.' | ';
  30.  
  31. // Volgende:
  32. if ($pagina < $totaal_paginas) {
  33. echo '<a href="'.$_SERVER['PHP_SELF'].'?p='.($pagina+1).'">volgende >></a>';
  34. }
  35. echo '<br />De pagina\'s:<br />';
  36. for($i = 1; $i <= $totaal_paginas; $i++) {
  37. echo ' <a href="'.$_SERVER['PHP_SELF'].'?p=".$i.'">'.$i.'</a>';
  38. }
  39. ?>


Deze vond ik maar heb lieft met [page][/page]
enhoe verwerk ik dat in me ubb.inc.php
Offline Legolas - 03/05/2005 10:39 (laatste wijziging 03/05/2005 10:39)
Avatar van Legolas Onbekend Je split hem nu alleen op [/page]. volgens mij moet je met preg_match() hem ff splitten op [page] EN [/page]. Zoiets:
  1. <?
  2. $text = "[page]deel1[/page]";
  3. preg_match('/\[page\](.*?)\[\/page\]/', $text, $match);
  4. echo $match[1];
  5. ?>

Dan haal je dus de content tussen de pages uit. dan kun je mss met een lus iets daaraan doen om meerdere pages te doen.
Offline thyssimonis - 03/05/2005 10:45
Avatar van thyssimonis PHP interesse
  1. <?php
  2. // Voorbeeld van een tekst, haal dit bvb uit database:
  3. $dbtext = '[page]deel1[/page][page]deel2[/page][page]deel3[/page]';
  4.  
  5. // We kappen de tekst in stukken op basis van '[break]'
  6. preg_match('/\[page\](.*?)\[\/page\]/', $dbtext, $match);
  7.  
  8. // Totaal aantal 'stukken':
  9. $totaal_paginas = sizeof($match);
  10.  
  11. // De actieve pagina halen we uit de url:
  12. if (IsSet($_GET['p'])) {
  13. $pagina = $_GET['p'];
  14. }
  15. else {
  16. $pagina = 1;
  17. }
  18.  
  19. // Print de juiste tekst en paginanummer:
  20. echo $match[$pagina-1];
  21. echo '<hr />';
  22.  
  23. // Vorige:
  24. if ($pagina > 1) {
  25. echo '<a href="'.$_SERVER['PHP_SELF'].'?p='.($pagina-1).'"><< vorige</a>';
  26. }
  27.  
  28. // Huidige:
  29. echo ' | Dit is pagina '.$pagina.' van '.$totaal_paginas.' | ';
  30.  
  31. // Volgende:
  32. if ($pagina < $totaal_paginas) {
  33. echo '<a href="'.$_SERVER['PHP_SELF'].'?p='.($pagina+1).'">volgende >></a>';
  34. }
  35. echo '<br />De pagina\'s:<br />';
  36. for($i = 1; $i <= $totaal_paginas; $i++) {
  37. echo '<a href="'.$_SERVER['PHP_SELF'].'?p='.$i.'">'.$i.'</a>';
  38. }
  39. ?>


Hij doet het nog niet zo goed
Offline Legolas - 03/05/2005 10:47 (laatste wijziging 03/05/2005 10:48)
Avatar van Legolas Onbekend Ja idd maar ik deed ook preg_match, het moet met preg_split. zal ff opzoeken in andere ubb parser hoe ze dat doen.:)
preg_match kan alleen met 1 pagina, heb je lekr veel aan^^
Offline thyssimonis - 03/05/2005 10:52
Avatar van thyssimonis PHP interesse Oke merkte ik ook kreeg op 1e pagina noormale text en andere pagina alleen deel1
Offline Thomas - 03/05/2005 11:07
Avatar van Thomas Moderator Denk eraan dat je alleen maar "UBB-code" hoeft uit te voeren op de pagina die je laat zien (je hoeft geen tags om te zetten van pagina's die je niet ziet, lijkt mij).

Je kunt dus prima volstaan met preg_match() als je éérst de pagina's splitst *, en dan de pagina die je wilt laten zien "parsed" (volgens mij is het niet eens parsing, maar goed) met je UBB-functies.

*: Het splitsen kan gewoon met explode, als je een enkele tag (geen dubbele (openings- en sluitingstag), dit lijkt me niet nodig) als pagina-scheiding gebruikt.
Offline thyssimonis - 03/05/2005 11:10
Avatar van thyssimonis PHP interesse [page][/page] is handergier anders gaan mensen deze fout maken.
text[page]text[page]
of
[page]d[/page][page]d[/page]

[page][/page] is veiliger.

p.s. Hemel komt hier naar beneden
:)
Offline Legolas - 03/05/2005 11:13 (laatste wijziging 03/05/2005 11:14)
Avatar van Legolas Onbekend @FangorN:
hoe bedoel je dit nou precies, bedoel je dat je dat met [page] gewoon kan exploden?
EDIT:
wat je ook kunt doen: een tag:
[nextpage] onder elke pagina, behalve de laatste. dan kan het HEEL makkelijk met explode():ooh:
Offline Thomas - 03/05/2005 11:23
Avatar van Thomas Moderator Jah, ik was zoiets aan het maken voor een tutorial-achtig systeem:

tutorial.php
  1. <?php
  2. function getmicrotime() {
  3. list($usec, $sec) = explode(" ", microtime());
  4. return ((float)$usec + (float)$sec);
  5. }
  6.  
  7. function tutorial($file, $sep="<!-- PAGE_BREAK -->") {
  8. $handle = fopen($file, "rb"); // binary safe read
  9. $content = fread($handle, filesize($file));
  10. fclose($handle);
  11.  
  12. $content = str_replace($sep."\r\n", $sep."\n", $content);
  13. $content = str_replace($sep."\n", $sep, $content);
  14. return explode($sep, $content);
  15. }
  16.  
  17. function tutorial_nav($cpage, $npage, $pvar="p") {
  18. $ret = "";
  19. $url = $_SERVER['PHP_SELF'].url(array($pvar)).(strlen($url) > 0 ? "&amp;" : "?").$pvar."=";
  20.  
  21. if($cpage > 0) {
  22. // first
  23. $ret .= "<a href=\"".$url."0\">&lt;&lt;</a> ";
  24.  
  25. // previous
  26. $ret .= "<a href=\"".$url.($cpage - 1)."\">&lt;</a> ";
  27. }
  28.  
  29. for($i=0; $i < $npage; $i++) {
  30. if($i == $cpage) {
  31. $ret .= "<b>".($i+1)."</b>\n";
  32. } else {
  33. $ret .= "<a href=\"".$url.$i."\">".($i+1)."</a>\n";
  34. }
  35. if($i+1 < $npage) $ret .= " - ";
  36. }
  37.  
  38. if($cpage+1 < $npage) {
  39. // next
  40. $ret .= " <a href=\"".$url.($cpage + 1)."\">&gt;</a>";
  41.  
  42. // last
  43. $ret .= " <a href=\"".$url.($npage - 1)."\">&gt;&gt;</a>";
  44. }
  45. return $ret;
  46. }
  47.  
  48. function url($exclude=array(), $safe=1) {
  49. $amp = ($safe) ? "&amp;" : "&";
  50. $ret = "";
  51. $aret = array();
  52.  
  53. foreach($_GET as $k => $v) {
  54. if(!in_array($k, $exclude)) {
  55. $aret[] = $k."=".$v;
  56. }
  57. }
  58. if(sizeof($aret)) $ret .= "?".implode($amp, $aret);
  59.  
  60. return $ret;
  61. }
  62. ?>
  63. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  64. <html>
  65. <head>
  66. <title>html template</title>
  67. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  68. <style type="text/css">
  69. <!--
  70. table {
  71. width: 90%;
  72.  
  73. }
  74. body {
  75. font-family: Arial;
  76. font-size: 9pt;
  77. color: #000000;
  78. }
  79.  
  80. p {
  81. text-align: justify;
  82. margin: 0;
  83. padding: 0;
  84. }
  85.  
  86. h1 {
  87. font-size: 14pt;
  88. font-weight: bold;
  89. margin: 0;
  90. padding: 0;
  91. }
  92.  
  93. h2 {
  94. font-size: 12pt;
  95. font-weight: bold;
  96. font-style: italic;
  97. margin: 0;
  98. padding: 0;
  99. }
  100.  
  101. pre {
  102. margin: 0;
  103. padding: 0;
  104. }
  105.  
  106. .table {
  107. width: 90%;
  108. border: 1px solid #000;
  109. background-color: #fcfcfc;
  110. padding-top: 15px;
  111. padding-bottom: 15px;
  112. padding-left: 10px;
  113. padding-right: 10px;
  114. }
  115.  
  116. .nav {
  117. width: 90%;
  118. }
  119.  
  120. td {
  121. font-family: Arial;
  122. font-size: 9pt;
  123. color: #000;
  124. }
  125. //-->
  126. </style>
  127. </script>
  128. </head>
  129.  
  130. <body>
  131. <?php
  132. $tijd = getmicrotime();
  133. $tut = tutorial("test.tut");
  134. $page = 0;
  135. if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > -1 && $_GET['p'] < sizeof($tut)) {
  136. $page = $_GET['p'];
  137. }
  138. ?>
  139. <div align="center">
  140. <table class="table">
  141. <tr>
  142. <td width="100%">
  143. <?= $tut[$page] ?>
  144. </td>
  145. </tr>
  146. </table>
  147.  
  148. <table class="nav">
  149. <tr>
  150. <td width="50%">
  151. <?= tutorial_nav($page, sizeof($tut)) ?>
  152. </td>
  153. <td width="50%" align="right">
  154. took <?= round(getmicrotime() - $tijd, 3) ?>s
  155. <?= ($page+1) ?>/<?= sizeof($tut) ?>
  156. </td>
  157. </tr>
  158. </table>
  159. </div>
  160. </body>
  161. </html>


test.tut:
  1. <h1>1. Inleiding</h1>
  2. <br />
  3. <p align="justify">
  4. Deze tutorial beschrijft TemplatePower - een in PHP geschreven template-engine die
  5. code en opmaak van je webpage 100% scheidt.
  6. </p>
  7. <br />
  8. <h2>1.1 TemplatePower - een kennismaking</h2>
  9. <br />
  10. Blaat.
  11.  
  12. <!-- PAGE_BREAK -->
  13. <h1>2. TemplatePower verder uit de doeken gedaan</h1>
  14. <br />
  15. <p align="justify">
  16. </p>
  17. <h2>2.1 Basiskennis PHP</h2>
  18.  
  19. <!-- PAGE_BREAK -->
  20. <h1>3. Methoden bij het TemplatePower object</h1>
  21. <br />
  22. Blaat.<br />
  23. <br />
  24. <h2>methode 1</h2>
  25. <br />
  26. Blaat.<br />
  27. <br />
  28. <h2>methode 2</h2>
  29. <br />
  30. Blaat.<br />
  31. <br />
  32. <h2>methode 3</h2>
  33. <br />
  34. Blaat.<br />
  35. <br />
  36. <!-- PAGE_BREAK -->
  37. <h1>4. Voorbeeld</h1>
  38. <br />
  39. <div style="width: 90%; border: 1px solid #cccccc; background-color: #eeeeee;">
  40. <pre>
  41. &lt;?php
  42. echo "Hello world";
  43. ?&gt;
  44. </pre>
  45. </div>
Offline thyssimonis - 03/05/2005 21:49 (laatste wijziging 03/05/2005 22:42)
Avatar van thyssimonis PHP interesse Deze snap ik neti zo!
heb nog geen goede:(
Offline CelestialCelebi - 04/05/2005 08:29 (laatste wijziging 04/05/2005 08:30)
Avatar van CelestialCelebi PHP gevorderde En als je dit werk nu eens door de database laat doen met SUBSTRING()? Zou heel wat sneller zijn..

EDIT: Of dan inderdaad met explode() ja..
Offline Thomas - 04/05/2005 11:29
Avatar van Thomas Moderator [page][/page] lijkt mij niet echt zinnig - wat doe je met tekst die buiten een [page][/page]-blok valt ? Hier vallen volgens mij meer fouten mee te maken dan een simpele pagina-scheiding "[page]" (je kan namelijk de sluitingstag vergeten / uitpoetsen - dan gaan twee of meer pagina's door elkaar lopen lijkt me).

Een enkele tag "[page]" lijkt me voldoende - deze geeft de scheiding tussen twee pagina's aan. Als mensen beginnen met [page] dan hebben ze gewoon de werking van de tag duidelijk niet begrepen (en in het ergste geval krijgt iemand een lege pagina te zien, wat me nog altijd minder storend lijkt dan twee pagina's die door elkaar lopen).
Offline thyssimonis - 04/05/2005 13:08
Avatar van thyssimonis PHP interesse als ik dan met [page] veder ga heb ik een goede nodig die ik zo in em ubb.inc.php kan zetten
Offline thyssimonis - 05/05/2005 12:37 (laatste wijziging 05/05/2005 13:41)
Avatar van thyssimonis PHP interesse ik heb nu dit
  1. <?php
  2.  
  3. ## Dit haal je bijvoorbeeld uit de database o.i.d.
  4. $input_data = "[page]Hallo.[/page]";
  5. $input_data .= "[page]Hier komt pagina twee![/page]";
  6.  
  7. ## Array ##
  8. $paginas = array( );
  9.  
  10. if(preg_match_all( "!\[page\](.+)\[\/page\]!Usi" , $input_data, $matches ))
  11. {
  12. for( $x = 0; $x < sizeof( $matches ); $x++ )
  13. {
  14. $paginas[ ] = $matches[ 1 ][ $x ];
  15. }
  16. }
  17.  
  18.  
  19. if( empty( $_GET['pagina'] ) OR !is_numeric( $_GET['pagina'] ) OR $_GET['pagina'] > (count( $paginas )) )
  20. $now = 0;
  21. else
  22. $now = ($_GET['pagina']-1);
  23.  
  24. ?>


maar hoe verwerk ik dit dan in me ubb? en hoe doe ik eht met pagina navigatie? weet wel hoe meot maken maar hoe geef ik dat mee etc.

$bericht = preg_replace ("#\[size=(.*)\](.*)\[/size\]#si", "<font size=\"\\1\">\\2</font>", $bericht);

dit is een stukje je uit mijn ubb
Offline Thomas - 05/05/2005 13:30 (laatste wijziging 05/05/2005 13:31)
Avatar van Thomas Moderator Het opsplitsen van tekst in pagina's en het toepassen van UBB-omzettingen (tag naar HTML) zijn echt twee verschillende dingen.

Je hoeft (zoals al eerder gezegd) alleen UBB-codes van de pagina die je afdrukt om te zetten, dus als je een functie ubb_code() hebt, die al je UBB-bewerkingen uitvoert, dan verander je regel 24 naar:

echo ubb_code($paginas[$now]);

?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.273s