Köra funktion på del av text hämtad från MySQL med PHP

Permalänk

Köra funktion på del av text hämtad från MySQL med PHP

Jag har ett litet klurigt dilemma jag inte riktigt vet hur jag ska lösa. I en databas har jag en text och jag skulle vilja köra en bit av den texten i en funktion när den skrivs ut.

Jag har klurat runt men inte riktigt kommit på en bra lösning. Det borde gå om man loopar igenom hela texten men det känns (förhoppningsvis) onödigt.
Det jag har funderat på senast är att jag sparar texten i databasen med en bb-tagg runt den bit jag vill köra i funktionen t.ex. [tagg]min text[/tagg]. Jag har klurat på att sedan få till det med preg_replace men jag får det inte att fungera och jag är tveksam på om det fungerar alls? Den är väl mer för att ersätta text mot annan text och det känns inte som det går att nästla in en funktion i det hela.

Hur som helst vill jag på något sätt köra en bit av en text från en mysql-databas genom en funktion. Alla tips och idéer är välkomna.

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk
Medlem

Förstår inte riktigt vad det skulle vara bra för, prestandan kanske inte direkt är på topp, om det ens är genomförbart.

Av ren nyfikenhet, varför vill du ha denna lösningen istället det "normala" tillvägagångssättet?

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Legendarisk

Är inte säker på om det är vad du menar, men du kan evaluera ersättningen med preg_replace(), så länge du inte behöver någon struktur i texten utan bara vill ersätta ett stycke är det ett lätt alternativ:

$text = 'lorem ipsum [caps]dolor[/caps] sit amet'; echo preg_replace('#(\[caps\](.+)\[/caps\])#ieU',"strtoupper('$2')",$text); => lorem ipsum DOLOR sit amet

http://nl2.php.net/manual/en/reference.pcre.pattern.modifiers...

Visa signatur

Abstractions all the way down.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av KentRoyal
Jag har ett litet klurigt dilemma jag inte riktigt vet hur jag ska lösa. I en databas har jag en text och jag skulle vilja köra en bit av den texten i en funktion när den skrivs ut.

Jag har klurat runt men inte riktigt kommit på en bra lösning. Det borde gå om man loopar igenom hela texten men det känns (förhoppningsvis) onödigt.
Det jag har funderat på senast är att jag sparar texten i databasen med en bb-tagg runt den bit jag vill köra i funktionen t.ex. [tagg]min text[/tagg]. Jag har klurat på att sedan få till det med preg_replace men jag får det inte att fungera och jag är tveksam på om det fungerar alls? Den är väl mer för att ersätta text mot annan text och det känns inte som det går att nästla in en funktion i det hela.

Hur som helst vill jag på något sätt köra en bit av en text från en mysql-databas genom en funktion. Alla tips och idéer är välkomna.

Du måste förklara mycket mer utförligare än det där. Det låter som du vill få print($hej); att fungera. Ett exempel på hur du vill att det ska fungera är en bit på vägen, exempelvis.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

Biberu: ditt förslag fungerade. Det blev lite problem när det var flera rader hämtade från databasen men det ska jag nog kunna parera.

För att ni andra ska förstå hur jag menar ifall det finns en bättre lösning:
Jag har en text i en MySQL-databas som jag hämtar och lägger i en array t.ex. $data['min_text']. Den ser ut såhär:

Här är min text här är en rad till snart är texten slut nu stänger jag ner.

Vanligtvis kör man ju en vanlig echo $data['min_text'] och skriver ut detta men jag vill att en bit av denna texten t.ex. "här är en rad till \nl snart är texten slut" ska köras genom en funktion som exempelvis strtoupper() (det är ju inte den men som rent exempel).

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk
Medlem

substr() ??

använd substr för att plocka ut en del av en sträng och tilldela denna en variabel

kör sedan denna variabel i din nya funktion

Visa signatur

Har varit på detta forum på tok för länge...

Permalänk
Citat:

Ursprungligen inskrivet av UndCon
substr() ??

använd substr för att plocka ut en del av en sträng och tilldela denna en variabel

kör sedan denna variabel i din nya funktion

Problemet är ju att jag inte vet exakt var textebiten ligger så substr är inget alternativ.

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av KentRoyal
Problemet är ju att jag inte vet exakt var textebiten ligger så substr är inget alternativ.

http://se2.php.net/manual/en/function.strpos.php

Permalänk
Legendarisk

KentRoyal: #(\[caps\](.+)\[/caps\])#sieU <- s-modifiern gör att . matchar nya rader också, så du kan ha radbrytningar inom tagsen. Se länken i mitt förra inlägg.

Du skulle kunna använda strpos+substr för att splitta texten manuellt och spara lite prestanda, knappast värt besväret, men det beror på vad du gör ofc.

Visa signatur

Abstractions all the way down.