anoniem Geplaatst: 1 juli 2003 Delen Geplaatst: 1 juli 2003 Hallo, Weet iemand een manier om een grote text, welk in een database is opgeslagen, te splitten in stukjes van ca. 500 regels. vb: $text = 2000 regels lang; gaat het op deze manier: [code:1:41cdff37ee] $display = 500; // 500 regels $kwarttext = split($display, $text); [/code:1:41cdff37ee] en indien dit goed werkt, wat is mn output in dit geval? Bij voorbaat dank.... Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 De eerste parameter in de split functie is een scheidingsteken. Daar geef je nu dus 500 op. Het gaat dus niet werken op deze manier. Zou zoiets niet werken (even uit de losse pols)? [code:1:af5a3912f6] $kwartarray = explode ("\n", $text); [/code:1:af5a3912f6] edit: ow hmm dan heb je per losse regel natuurlijk. stom van mij.. Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 Is hiervan niet het gevolg dat ik dan achter elk regeleinde in mijn database " \n" moet toevoegen? Dat is namelijk geen optie, aangezien de tekst niet via php in de database komt, maar weer via een andere applicatie. Plus dat dat niet echt "uuserfriendly" is. Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 [quote:15e7639386="Idefix"]Is hiervan niet het gevolg dat ik dan achter elk regeleinde in mijn database " \n" moet toevoegen? Dat is namelijk geen optie, aangezien de tekst niet via php in de database komt, maar weer via een andere applicatie. Plus dat dat niet echt "uuserfriendly" is.[/quote:15e7639386] \n == new line. Je hoeft dus niks in de database aan te passen, want ik neem aan dat je daar al 'enters' tussen de regels hebt zitten. Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 [quote:e67377174d] ow hmm dan heb je per losse regel natuurlijk. stom van mij.. [/quote:e67377174d] Das het probleem niet zo zeer, [code:1:e67377174d] $aantal = count($kwartarray); [/code:1:e67377174d] Alleen dan de nog het " on the fly " generen van paginalinken. Misschien iemand een idee....... Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 Ik zie 2 simpele opties (en ongetwijfeld zijn er nog meer). [b:ecd5fb40e3]Optie 1[/b:ecd5fb40e3] Doorloop de tekst in een lus en haal met een substring functie telkens 'brokken' tekst op. Als semi-pseudo-code ziet dat er dan ongeveer zo uit: [code:1:ecd5fb40e3] for ($i = 0; $i < $lengteVanString; $i += 500) { $arrayMetBrokken[] = substring($tekst, $i, 500); } [/code:1:ecd5fb40e3] [b:ecd5fb40e3]Optie 2[/b:ecd5fb40e3] Gebruik een regular expression. En dat ziet er dan ongeveer zo uit: [code:1:ecd5fb40e3] preg_match("/.{0,500}/", $tekst, $arrayMetBrokken); [/code:1:ecd5fb40e3] p.s. in beide gevallen zal je even de juiste functies er bij moeten zoeken in de manual, ik doe dit namelijk effe uit de losse pols (het gaat meer om het idee). Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 [quote:b11b17ca0c="Annie"][i:b11b17ca0c]verhaaltje[/i:b11b17ca0c][/quote:b11b17ca0c] Mja dan krijg je dus strings met een lengte van 500 tekens. Ik dacht dat dat niet de bedoeling was. Quote Link naar reactie
anoniem Geplaatst: 1 juli 2003 Auteur Delen Geplaatst: 1 juli 2003 Indeed, fout gelezen. Vergeet het [i:41cc0b3321]verhaaltje[/i:41cc0b3321] dus maar. Quote Link naar reactie
anoniem Geplaatst: 2 juli 2003 Auteur Delen Geplaatst: 2 juli 2003 Toch is het idee toch niet zo moeilijk? Je bepaalt waarop je wil splitten, dat kan een punt (".") zijn maar ook de reeds genoemde newline ("\n"). Je split de invoer zodat je een array krijgt met alle regels. Je bepaalt de lengte van de array en berekent hoeveel pagina's die beslaat. In een loopje toon je alle regels (max 500) en je plaatst een link naar andere pagina's met een variabele die bepaalt waar je begint. Daar begint het verhaal ongeveer opnieuw... Of vergeet ik nu iets? - Bas Quote Link naar reactie
anoniem Geplaatst: 2 juli 2003 Auteur Delen Geplaatst: 2 juli 2003 [quote:6f7c299cb3] Toch is het idee toch niet zo moeilijk? Je bepaalt waarop je wil splitten, dat kan een punt (".") zijn maar ook de reeds genoemde newline ("\n"). Je split de invoer zodat je een array krijgt met alle regels. Je bepaalt de lengte van de array en berekent hoeveel pagina's die beslaat. In een loopje toon je alle regels (max 500) en je plaatst een link naar andere pagina's met een variabele die bepaalt waar je begint. Daar begint het verhaal ongeveer opnieuw... Of vergeet ik nu iets? [/quote:6f7c299cb3] Nee je vergeet hier niets, dat is precies wat ik nodig heb, en inmiddels heb ik ook de code in elkaar gedraaid om te splitten en alles in een array te gooien. Alleen op het moment dat ik daar de links voor wil plaatsen, krijg ik niets meer te zien. :cry: Quote Link naar reactie
anoniem Geplaatst: 2 juli 2003 Auteur Delen Geplaatst: 2 juli 2003 Laat eens ff zien wat je nu ongeveer hebt dan.. Quote Link naar reactie
anoniem Geplaatst: 2 juli 2003 Auteur Delen Geplaatst: 2 juli 2003 [quote:1488ef2f92] Laat eens ff zien wat je nu ongeveer hebt dan.. [/quote:1488ef2f92] Ik post vanavond laat wel ff wat ik nu heb, voor die tijd ben ik niet thuis.... Quote Link naar reactie
anoniem Geplaatst: 3 juli 2003 Auteur Delen Geplaatst: 3 juli 2003 "vanavond" is wat later geworden, hierbij een deel v/d code: $text > 1000 regels; [code:1:b73de438fb] <? $page = $_GET['page']; $subtext = explode("<pagebreak>", $text); // split on <pagebreak> $num_subtext = count($subtext); // count number of arrays if(empty($page)) // check if pagenumber isset $page = 1; } else { // if yes, add 1 $page = $page + 1; $pageprev = $page - 1; // assign pages $pagenext = $page + 1; echo $subtext[$page]; // echo pages // define and echo link echo("<a href=\"$PHP_SELF&page=$pageprev\">Vorige</a>"); echo("<a href=\"$PHP_SELF&page=$pagenext\">Volgende</a>"); ?> [/code:1:b73de438fb] Zoals te lezen split ik momenteel nog op <pagebreak>, maar dat wil ik dus het liefst op een regeltje of 500 hebben. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen