/ 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
Overstregning i dokument.
Fra : Janus Hoi


Dato : 04-02-04 01:04

Hvordan laver man sådan at man kan skrive i adressefeltet:


www.minserver.dk/artikel.php?ord=lakridsrod


og så alle ordene lakridsrod bliver highlighted med en farve?

--
Janus



 
 
Kristian Thy (04-02-2004)
Kommentar
Fra : Kristian Thy


Dato : 04-02-04 01:19

Janus Hoi uttered:
> Hvordan laver man sådan at man kan skrive i adressefeltet:
>
> www.minserver.dk/artikel.php?ord=lakridsrod
>
> og så alle ordene lakridsrod bliver highlighted med en farve?

Hvis vi antager at du har sidens tekst i $output, kan du jo køre hele
teksten gennem:

echo preg_replace( $_GET['ord'],
"<span style=\"background-color:teal\">\\1</span>",
$output );


\\kristian
--
I need a googlebot to index my flat.

Peter Brodersen (04-02-2004)
Kommentar
Fra : Peter Brodersen


Dato : 04-02-04 02:22

On 4 Feb 2004 00:19:21 GMT, Kristian Thy <thy@it.edu> wrote:

>echo preg_replace( $_GET['ord'],
> "<span style=\"background-color:teal\">\\1</span>",
> $output );

Husk at preg_replace skal have delimiters på, og at du også skal bruge
capturing parenteser i udtrykket eller bruge \\0. Derudover bør
$_GET['ord'] også tjekkes for regex-tegn. Mit foreslag er:

<?php
$pattern = '/'.preg_quote($_GET['ord']).'/i';
$replacement = '<span style="background-color:teal">$0</span>';
echo preg_replace($pattern,
$replacement,
$output );
?>

Skal den kun matche hele ord, og ikke være case-insensitive, så kan
man fx bruge:

$pattern = '/\b'.preg_quote($_GET['ord']).'\b/';

--
- Peter Brodersen

Ebbesen for president!

Peter Brodersen (04-02-2004)
Kommentar
Fra : Peter Brodersen


Dato : 04-02-04 02:27

On Wed, 04 Feb 2004 02:21:51 +0100, Peter Brodersen <usenet@ter.dk>
wrote:

>$pattern = '/'.preg_quote($_GET['ord']).'/i';

Og her skulle delimiteren selvfølgelig have været, med, altså:
   $pattern = '/'.preg_quote($_GET['ord'],'/').'/i';

Dvs.:

<?php
$pattern = '/'.preg_quote($_GET['ord'],'/').'/i';
$replacement = '<span style="background-color:teal">$0</span>';
echo preg_replace($pattern,
$replacement,
$output );
?>

--
- Peter Brodersen

Ebbesen for president!

Kristian Thy (04-02-2004)
Kommentar
Fra : Kristian Thy


Dato : 04-02-04 11:55

Peter Brodersen uttered:
> Husk at preg_replace skal have delimiters på, og at du også skal bruge
> capturing parenteser i udtrykket eller bruge \\0. Derudover bør
> $_GET['ord'] også tjekkes for regex-tegn.

Jaja - jeg glemte disclaimeren: "Denne kode er tæsket ud på 1½ minut
klokken alt for sent. Ikke testet. Bør ikke bruges af børn og
hunde. Etc. etc."

\\kristian
--
"Don't fuck with Benny the Cop!"

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste