Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] text uit database splitten in variabelen

Idefix
12 antwoorden
  • 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….
  • 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 ("
    ", $text);
    [/code:1:af5a3912f6]

    edit: ow hmm dan heb je per losse regel natuurlijk. stom van mij..
  • Is hiervan niet het gevolg dat ik dan achter elk regeleinde in mijn database "
    " 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="Idefix"]Is hiervan niet het gevolg dat ik dan achter elk regeleinde in mijn database "
    " 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]


    == 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: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…….
  • 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: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.
  • Indeed, fout gelezen. Vergeet het [i:41cc0b3321]verhaaltje[/i:41cc0b3321] dus maar.
  • 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 ("
    "). 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: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 ("
    "). 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:
  • Laat eens ff zien wat je nu ongeveer hebt dan..
  • [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….

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.