Ga naar inhoud

[PHP] text uit database splitten in variabelen


Aanbevolen berichten

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....
Link naar reactie
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..
Link naar reactie
[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.
Link naar reactie
[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.......
Link naar reactie
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).
Link naar reactie
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
Link naar reactie
[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:
Link naar reactie
"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.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...