Malcolm Beck´s: RegEx - Zahl filtern und in einem Query verwenden

Beitrag lesen

hi Vinzenz,

alles. Ein wundervolles Beispiel für den unnötigen Einsatz von regulären Ausdrücken.

Stimmt schon.

$var = preg_replace('#\[mynews\](.*)\[/mynews\]\s*(.*)#', "$1", $marginalien);

warum speicherst Du in Deiner Backreferenz alles, wenn Du für Deine LIMIT-Klausel nur die erste Ziffernfolge benötigst, die nach [mynews] und vor [/mynews] auftritt?

Ich komme sonst nicht an die benötigte Ziffer.

b) Viel besser: verzichte auf den RegExp.

Ja, gerne ;)

Speichere diese offensichtlich wichtige Information in einer eigenen Spalte ab - und Du erledigst Dein Problem weit eleganter als mit dem elegantesten und korrektesten regulären Ausdruck, den man sich vorstellen kann.

Ok, dass wäre kein Problem.

Durch die getrennte Speicherung wird die LIMIT-Klausel zum Kinderspiel und Du kannst Du Dein preg_replace() durch den .-Operator ersetzen, was nicht nur eleganter sondern auch leichter lesbar ist.

Hier fehlt mir die Logik, dass zu programmieren. Nehmen wir das Feld „Marginalien“, wo ich jeder Seite etwas anderes zuordnen kann.
Jetzt möchte ich mir die möglichkeit schaffen, auf jeder Seite (wenn benötigt) die News einzublenden, eben mit einer Limit-Klausel.
Das Feld „Marginalien“ ist Longtext, so dass auch unter den News oder davor noch etwas anders stehen kann.
Ein Beispiel was vorkommen könnte:

ID  | Marginalien
----+------------
112 | Einige Infos
    | Ein Link
    | [News]

[News] soll dann halt aus der Tabelle für News ausgelesen werden und mit einem Limit ausgegeben werden. Wie kann ich sowas sonst bewerkstelligen?
Das ist mit einer meiner hauptprobleme, die ich mit MySQL derzeit noch habe.
Sobald ich eine Funktion benötige, die im Fliesstext der Daten vorkommt, komme _ich_ um RegEx einfach nicht drumrum.

Korrigiere daher Dein Tabellendesign.

Ich versuche es Krampfhaft.

mfg

--
„Wenn du nicht bereit bist, dafür zu sterben, dann streiche das Wort »Freiheit« aus deinem Vokabular.“ -- Malcolm X
I Have a Dream