/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
highlight i tekst
Fra : Mille Jacobsen


Dato : 28-06-06 19:43

Hvordan laver man sådan, at man kan highlighte ord i en tekst i php?

Det jeg mener, kan ses her:
http://kortlink.dk/2ty6

Det er bare et eksempel jeg tilfældigt har udvalgt. Selve teksten som
sådan er ikke noget jeg på nogen måde henviser til.

Her er "Kvarteret" fremhævet med rødt, men det kunne jo være alle
mulige andre ord istedet.

--
Mille


 
 
Peter Brodersen (28-06-2006)
Kommentar
Fra : Peter Brodersen


Dato : 28-06-06 20:17

On 28 Jun 2006 11:42:44 -0700, "Mille Jacobsen" <millekysmund@ofir.dk>
wrote:

>Her er "Kvarteret" fremhævet med rødt, men det kunne jo være alle
>mulige andre ord istedet.

I den helt simple udgave kan du lave en søg&erstat i den tekst, du vil
markere et ord i. fx:

<?php
$text = "Her er min tekst. Er du med?";
$search = "er"; // dette input kan komme fra brugeren
$replace = "<span style='color: red;'>".$search."</span>";
print str_replace($search,$replace,$text);
?>

En mere avanceret vil så tillade forskelle i store og små bogstaver
(så "Er" medtages i eksemplet) og eventuelt kun søge ved grænser af
ord (så "Her" ikke medtages i eksemplet").

Her kan man bruge regulære udtryk, der dog kan være noget komplekse at
give sig i kast med. Men et eksempel kunne være:

<?php
$text = "Her er min tekst. Er du med?";
$search = "er"; // dette input kan komme fra brugeren
$regex_search = '/\b('.preg_quote($search,'/').')\b/i';
$regex_replace = "<span style='color: red;'>$1</span>";
print preg_replace($regex_search,$regex_replace,$text);
?>

Denne retter "er" og "Er" i teksten til rødt. Den tager dog ikke højde
for at $text kan indeholde HTML, og at brugeren kan få spøjse
resultater ved at søge efter HTML-tags. Men til mange almindelige
formål vil den være helt fin.

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med link direkte til en adresse, fx: www.findvej.dk/Nybrogade2,1203

ThomasB (28-06-2006)
Kommentar
Fra : ThomasB


Dato : 28-06-06 22:48

"Peter Brodersen" <usenet2006@ter.dk> skrev i en meddelelse
news:e7ukis$pc4$1@news.klen.dk...
> <?php
> $text = "Her er min tekst. Er du med?";
> $search = "er"; // dette input kan komme fra brugeren
> $replace = "<span style='color: red;'>".$search."</span>";
> print str_replace($search,$replace,$text);
> ?>
>
> En mere avanceret vil så tillade forskelle i store og små bogstaver
> (så "Er" medtages i eksemplet) og eventuelt kun søge ved grænser af
> ord (så "Her" ikke medtages i eksemplet").
>
> Her kan man bruge regulære udtryk, der dog kan være noget komplekse at
> give sig i kast med. Men et eksempel kunne være:

<?php
$text = "Her er min tekst. Er du med?";
$search = "er"; // dette input kan komme fra brugeren
$replace = "<span style='color: red;
text-transform:uppercase;'>".$search."</span>";
print str_replace($search,$replace,$text);
?>

text-transform:uppercase er god i sådan en situation

(alternativt kan $search laves med strtoupper, eller man kan huske at skrive
søgeord med versaler.)



Peter Brodersen (29-06-2006)
Kommentar
Fra : Peter Brodersen


Dato : 29-06-06 09:56

On Wed, 28 Jun 2006 23:48:15 +0200, "ThomasB" <usenet*fjern*@*SKAL
FJERNES*2ma2.dk> wrote:

><?php
>$text = "Her er min tekst. Er du med?";
>$search = "er"; // dette input kan komme fra brugeren
>$replace = "<span style='color: red;
>text-transform:uppercase;'>".$search."</span>";
>print str_replace($search,$replace,$text);
>?>
>
>text-transform:uppercase er god i sådan en situation

Det er blot outputtet på klientsiden, der ændres på, og ikke
funktionaliteten. Problemet ved ovenstående er, at den stadigvæk
matcher "Her", men ikke "Er". Så outputtet af dette vil være:

HER ER min tekst. Er du med?

(hvor de to gange "ER" vil være rød)

>(alternativt kan $search laves med strtoupper, eller man kan huske at skrive
>søgeord med versaler.)

Det ønskede ville jo være, at teksten bevarede den case, den var i, i
første omgang. Så outputtet fx vil være
   Her *er* min tekst. *Er* du med?
og ikke
   Her ER min tekst. ER du med?
eller
   HER ER min tekst. ER du med?

Det problem ordner det regulære udtryk.

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med link direkte til en adresse, fx: www.findvej.dk/Nybrogade2,1203

ThomasB (29-06-2006)
Kommentar
Fra : ThomasB


Dato : 29-06-06 20:48

"Peter Brodersen" <usenet2006@ter.dk> skrev i en meddelelse
news:e804j5$3vl$1@news.klen.dk...
>><?php
>>$text = "Her er min tekst. Er du med?";
>>$search = "er"; // dette input kan komme fra brugeren
>>$replace = "<span style='color: red;
>>text-transform:uppercase;'>".$search."</span>";
>>print str_replace($search,$replace,$text);
>>?>
>>
>>text-transform:uppercase er god i sådan en situation
>
> Det er blot outputtet på klientsiden, der ændres på, og ikke
> funktionaliteten. Problemet ved ovenstående er, at den stadigvæk
> matcher "Her", men ikke "Er". Så outputtet af dette vil være:
>
> HER ER min tekst. Er du med?
>
> (hvor de to gange "ER" vil være rød)

Ahhh, så er jeg med

H(red)ER(/red) (red)ER(/red) min tekst

> Det problem ordner det regulære udtryk.

Ja, det har du ret i.. RE er guld værd, men også svære at lære.



Martin (29-06-2006)
Kommentar
Fra : Martin


Dato : 29-06-06 12:06

Mille Jacobsen wrote:
> Hvordan laver man sådan, at man kan highlighte ord i en tekst i php?
>
> Det jeg mener, kan ses her:
> http://kortlink.dk/2ty6
>
> Det er bare et eksempel jeg tilfældigt har udvalgt. Selve teksten som
> sådan er ikke noget jeg på nogen måde henviser til.
>
> Her er "Kvarteret" fremhævet med rødt, men det kunne jo være alle
> mulige andre ord istedet.
>

<http://aidanlister.com/repos/v/function.str_highlight.php>

Denne klasse er ret genial til netop dit brug :)

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste