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

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Mar 2002

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.

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

Trädvy Permalänk
Medlem
Plats
Halmstad
Registrerad
Apr 2003

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?

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

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002

Ä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...

Abstractions all the way down.

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003
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.

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

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Mar 2002

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).

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

Trädvy Permalänk
Medlem
Registrerad
Jul 2001

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

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

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Mar 2002
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.

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

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2004
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

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002

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.

Abstractions all the way down.