langen text an mehrfach vorkommendem delimiter teilen
suit
- php
0 bleicher0 Gunnar Bittersmann
0 Steel0 suit
hallo,
kleines logik/denkansatz "problem":
ich habe einen längeren text der mitten drinnen mehrmals <!--page--> enthalten kann
die anzahl der vorkommnisse von page + 1 ergibt die seitenzahl
wenn ich nun aus diesem string den text für seite 2 haben möchte, wähle ich alles zwischen vorkommen 1 und 2 (bzw ab 1 bis ende) des strings mit substr und stripos herraus
nachdem ich die systematik dahiner nun erneuern und etwas effizenter gestalten möchte, gibts jetzt 2 möglichkeiten
#1 ein regulärer ausdruck und preg_match_all - damit spare ich das stripos/substr gesuche
oder
#2 direkt eine lösung über die datenbank (mysql) - allerdings bin ich unschlüssig, ob das schlau ist, da ich sowieso nochmal über die inhalte drüber muss (bb code parser und noch ein paar dinge)
ich bitte hiermit um ein paar ratschläge, wie das vernünftigerweise zu lösen ist
btw: das äusserst schlechte datenbankmodell (= alle seiten des textes sind in einem riesigen textfeld) kann leider nicht geändert werden (wirklich nicht)
Grüße,
$seiten=explode("<!--page--!>". $text);
$q--;
echo $seiten[$q];
wo $q die seitennumer darstellt. $q--; sorgt dafür dass es bei 0 anföngt.
MFG
bleicher
@@suit:
#1 ein regulärer ausdruck und preg_match_all - damit spare ich das stripos/substr gesuche
split() kennst du?
Live long and prosper,
Gunnar
Hi!
btw: das äusserst schlechte datenbankmodell (= alle seiten des textes sind in einem riesigen textfeld) kann leider nicht geändert werden (wirklich nicht)
Dann keine benutzen.
Hi!
btw: das äusserst schlechte datenbankmodell (= alle seiten des textes sind in einem riesigen textfeld) kann leider nicht geändert werden (wirklich nicht)
Dann keine benutzen.
keinen abfragen zum zerstückeln benutzen oder keine datebank allgemein? ;)
ersteres sehe ich ein, zweiteres ist etwas uncool, da die datenbank vorhanden ist und bereits etwa 120.000 datensätze hat (war nicht meine idee das so abzulegen)
Hi,
keinen abfragen zum zerstückeln benutzen oder keine datebank allgemein? ;)
Bei so einem Modell macht ne DB nicht viel Sinn...
ersteres sehe ich ein, zweiteres ist etwas uncool, da die datenbank vorhanden ist und bereits etwa 120.000 datensätze hat (war nicht meine idee das so abzulegen)
... aber scheinbar ist dort doch nicht alles in einem Feld?
Obwohl ich die DB nicht kenne, macht sie mir grad doch Angst.
... aber scheinbar ist dort doch nicht alles in einem Feld?
Obwohl ich die DB nicht kenne, macht sie mir grad doch Angst.
nein, es ist nicht alles in einem feld :D - es gibt schon getrennte felder für alles möglich (zeitpunkt, überschrift, autor, letzte änderung usw - nur der komplette fliesstext ist in einem einzigen feld - es gibt leider keine separate inhaltstabelle mit 1:n beziehungen zwischen datensatz und zugehören seiten
danke euch beiden, so einfach hab ich garnicht gedacht ;)
mir sind beide funktion bekannt - explode nutze ich aber vorrangig um kleine strings zu teilen (trennzeichenseparierte konfigurationsstrings zb)
zu split selbst -> so wie ereg_* soll das afaik nicht mehr verwendet werden, weils langsam ist und POSIX kompatible reguläre ausdrücke nutzt