Avatar billede apromis Praktikant
04. december 2004 - 13:41 Der er 5 kommentarer og
2 løsninger

find tekst på side ?

Hej.

Skal bruge et stykke kode som søger en hjemmeside igenenm for et ord. Hvis den finder det skal strFind være lig med True.

Er der nogen som kan hjælpe med deT?
Avatar billede detox Nybegynder
04. december 2004 - 14:05 #1
<?php
$lines = file('http://www.en_eller_anden_hjemmeside.dk');
$find = 'det'; // det ord den skal lede efter
$strFind = false;
foreach ($lines as $line) {
    if (preg_match("/\b$find\b/", $line)) {
        $strFind = true;
        break;
    }
}
// $strFind er nu true eller false
?>
Avatar billede olebole Juniormester
04. december 2004 - 14:53 #2
<ole>

'file' er binary-safe og derfor gabende langsom. Mon ikke, det er bedre at bruge 'file_get_contents'?

<?php
$file = file_get_contents('http://www.en_eller_anden_hjemmeside.dk');
if (preg_match("/\b$find\b/", $file)) $strFind = true;
// $strFind er nu true eller false
?>

/mvh
</bole>
Avatar billede olebole Juniormester
04. december 2004 - 14:54 #3
:)
Avatar billede detox Nybegynder
04. december 2004 - 15:09 #4
ole -> Jo, det har du nok ret i. Jeg havde i tankerne at vise i hvilken linje den evt. matchede, men det blev der jo ikke spurgt om, så den del fjernede jeg igen ;o)
Avatar billede olebole Juniormester
05. december 2004 - 04:27 #5
Yups, det giver jo fin mening, men faktisk _tror_ jeg denne er hurtigere:
    $file = file_get_contents('http://www.en_eller_anden_hjemmeside.dk');
    $lines = explode("\r\n", $file);
... men jeg skal ærligt indrømme, at jeg ikke har testet  :)
Avatar billede detox Nybegynder
05. december 2004 - 12:19 #6
Ny blev jeg jo nysgerrig og lavede en lille test:

71 linjer på 1.04534387589 sekunder // file()
7 linjer på 1.02436089516 sekunder  // file_get_contents() + explode()

De er stort set lige hurtige, nogen gange er den ene lidt hurtigere nogen gange den den anden. Men problemet er at explode kun finder 7 linjer.
Selv uden explode er forskellen meget lille (10 gennemløb):

1.0321171999 sekunder  // file_get_contents()
1.19991724491 sekunder  // file()
Avatar billede olebole Juniormester
05. december 2004 - 21:36 #7
Nej, man skal sikkert op i store filer, før forskellen bliver evident i det enkelte script.

Nu er sagen jo med server-performance, at scripts ikke afvikles et ad gangen - og selv en lille forringelse kan betyde meget, når alle serverens jobs lægges oveni hinanden.
Man ser det ofte, hvis man prøver at optimere på større portaler, der ligger på egen server. Der har selv små optimeringer ofte en forbløffende en stor virkning, på grund af de mange sidekald - og man har gode muligheder for at se effekten, når der ikke ligger andre sites på serveren  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester