/ 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
søgning på en HTML-side med PHP
Fra : Jan Poulsen


Dato : 13-04-03 19:13

Hej,

Kan man lave en funktion som søger en HTML-side igennem efter
et givet søgeord med PHP?

Og hvordan gør man, hvis man kan?

/jan



 
 
Esben (13-04-2003)
Kommentar
Fra : Esben


Dato : 13-04-03 20:06

Hej

> Kan man lave en funktion som søger en HTML-side igennem efter
> et givet søgeord med PHP?
>
> Og hvordan gør man, hvis man kan?

Mener du på den side man sidder og kigge på?

Esben



Jan Poulsen (13-04-2003)
Kommentar
Fra : Jan Poulsen


Dato : 13-04-03 21:18

> Mener du på den side man sidder og kigge på?
Nej, på en anden side. Altså hvis man har en søgefuktion i filen 'sog.php'
Den php-fil skal så søge på en html-side.



Lars Dybdahl (13-04-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 13-04-03 20:52

Jan Poulsen wrote:
> Kan man lave en funktion som søger en HTML-side igennem efter
> et givet søgeord med PHP?

Ja - indlæs siden med fopen()... og søgning kan foretages med strpos(),
linie for linie.

Lars.

--
Freelance programmør
Programmering mod timebetaling

Jan Poulsen (13-04-2003)
Kommentar
Fra : Jan Poulsen


Dato : 13-04-03 21:21

> Ja - indlæs siden med fopen()... og søgning kan foretages med strpos(),
> linie for linie.
øhh, hvordan.


Jeg har prøvet at lave dette

<?php
$handle = fopen ("about.html", "r");
$pos = strpos($handle, "test");
?>

værdien i $handle er 'Resource id #1', så hvordan skal jeg søge linie for
linie med strpos()?




Jan Poulsen (13-04-2003)
Kommentar
Fra : Jan Poulsen


Dato : 13-04-03 21:32

ahh, nu gik det op for mig...

Noget alá dette:

$fd = fopen ("about.html", "r");
while ($line=fgets($fd,1000))
{
$pos = strpos($line, "PHP");
$alltext.=$line;
}
fclose ($fd);
echo $alltext;


Tak for hjælpen, nu skal jeg bare til at finde ud af at fremhæve søgeordet
med fed skrift på siden...

/jan



Thomas Lindgaard (14-04-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 14-04-03 21:35

"Jan Poulsen" <jp@jumpstart.dk> wrote in
news:3e99c928$0$52099$edfadb0f@dread16.news.tele.dk:

> Tak for hj‘lpen, nu skal jeg bare til at finde ud af at fremh‘ve
> s›geordet med fed skrift p† siden...

Davs

Jeg har selv lavet noget søgehalløj for lidt tid siden og brugt koden
herunder til at highlighte søgeordene:

preg_replace(
'/(^|[^a-z0-9\'’])('.implode('|', $searchwords).')([^a-z0-9\'’]|$)/i',
'\\1<span class="searchword">\\2</span>\\3',
str_replace(' ', ' ', $text)
);

Det blev vist aldrig HELT bugfrit men det virker da... sårn... lidt...

Jeg må hellere lige smide en forklaring med:
1) $searchwords er et array bestående af søgeordene
2) Første og sidste parentes i første parameter i kaldet af preg_replace
er der vist nok for at undgå at highlighte "ko" i "ekko" og sårn (det
er her der kan være tale om bugs :)
3) ... og så bliver alle mellemrum skiftet ud med 2 mellemrum for at
kunne farve to søgeord der står efter hinanden i teksten (det
regulære udtryk matcher både det enkelte søgeord SAMT tegner før og
efter ordet, så hvis to søgeord komme lige efter hinanden og kun er
adskilt af et mellemrum, så vil første match spise mellemrummet
mellem ordene og andet ord vil dermed ikke blive matchet - og siden
det er HTML er to mellemrum jo lige så gode som et enkelt) (det er
også her der kan være tale om bugs :)

PUHA det er noget grim kode - men det endte faktisk med at virke godt
nok.

Men det korte af det lange er som følger: Hvis $searchwords er en streng
bestående af dine søgeord adskilt af lodret streg (dvs. "hej|med|dig"),
så kan følgende kald til preg_replace nok hjælpe dig et stykke på vej:

$text = preg_replace("/($searchwords)/", '<b>\\1</b>', $text);

.... og så er der nogle ting tilbage der nok skal håndteres.

Hvis det her lyder lige så indbydende som en gåtur i Lars Tyndskids
marker, så råb op :)

--
Hyggehej
/Thomas

Jan Poulsen (15-04-2003)
Kommentar
Fra : Jan Poulsen


Dato : 15-04-03 15:27

> Davs
>
> Jeg har selv lavet noget søgehalløj for lidt tid siden og brugt koden
> herunder til at highlighte søgeordene:
>
> preg_replace(
> '/(^|[^a-z0-9\''])('.implode('|', $searchwords).')([^a-z0-9\'']|$)/i',
> '\\1<span class="searchword">\\2</span>\\3',
> str_replace(' ', ' ', $text)
> );
>
> Det blev vist aldrig HELT bugfrit men det virker da... sårn... lidt...
>
> Jeg må hellere lige smide en forklaring med:
> 1) $searchwords er et array bestående af søgeordene
> 2) Første og sidste parentes i første parameter i kaldet af preg_replace
> er der vist nok for at undgå at highlighte "ko" i "ekko" og sårn (det
> er her der kan være tale om bugs :)
> 3) ... og så bliver alle mellemrum skiftet ud med 2 mellemrum for at
> kunne farve to søgeord der står efter hinanden i teksten (det
> regulære udtryk matcher både det enkelte søgeord SAMT tegner før og
> efter ordet, så hvis to søgeord komme lige efter hinanden og kun er
> adskilt af et mellemrum, så vil første match spise mellemrummet
> mellem ordene og andet ord vil dermed ikke blive matchet - og siden
> det er HTML er to mellemrum jo lige så gode som et enkelt) (det er
> også her der kan være tale om bugs :)
>
> PUHA det er noget grim kode - men det endte faktisk med at virke godt
> nok.
>
> Men det korte af det lange er som følger: Hvis $searchwords er en streng
> bestående af dine søgeord adskilt af lodret streg (dvs. "hej|med|dig"),
> så kan følgende kald til preg_replace nok hjælpe dig et stykke på vej:
>
> $text = preg_replace("/($searchwords)/", '<b>\\1</b>', $text);
>
> ... og så er der nogle ting tilbage der nok skal håndteres.
>
> Hvis det her lyder lige så indbydende som en gåtur i Lars Tyndskids
> marker, så råb op :)
>
> --
> Hyggehej
> /Thomas

Fedt nok, tak for koden...

Jeg har selv nået at lave lidt, men har det problem med at f.eks. 'ko'
bliver highlightet i 'ekko'.
Nu har jeg ikke lige haft tid til at afprøve din kode, men vil da kigge på
det hurtigst muligt...
Jeg tror nok jeg kan tyde hvad du skriver...

/jan



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

Månedens bedste
Årets bedste
Sidste års bedste