Avatar billede simseboii Nybegynder
10. juni 2007 - 09:15 Der er 7 kommentarer og
1 løsning

Sorter information fra kildekode

Hej.
Jeg er ved at hente noget information ud fra en hjemmeside via dens kildekode. For at få nøjagtig den information ud, jeg ønsker, bruger jeg explode().
Jeg kunne godt tænke mig at den tjekker om der er noget af den information jeg henter ud, der forekommer mere end én gang og hvis den gør, så udskriver den kun den én gang og hvor mange gange den forekom.
Derefter skal den så sortere hvor mange gange informationen forekom.

Jeg har lavet et eksempel med dyr:
Her er det, jeg henter kildekoden på:
http://www.snuzzer.dk/sommer/eks.php

Og her udskriver jeg det, jeg har henter fra kildekoden:
http://www.snuzzer.dk/sommer/eks_hent.php

Her er mit script:
http://www.snuzzer.dk/sommer/eks_hent.phps

På forhånd tak.
- Simon
Avatar billede well_r Nybegynder
10. juni 2007 - 10:26 #1
http://www.w3schools.com/php/php_ref_array.asp
array_count_values();

Returns an array with the number of occurrences for each value

brug funktionen og brug derefter print_r($array) for at se datastrukturen
Avatar billede simseboii Nybegynder
10. juni 2007 - 15:37 #2
Hej.
Ja, det ligner lige, hvad jeg er på udkig efter.
Når jeg udskriver det, ser det ud, som på nedenstående link. Hvordan får jeg det udskrevet på en lidt pænere måde?

http://www.snuzzer.dk/sommer/eks_hent.php

- Simon
Avatar billede simseboii Nybegynder
10. juni 2007 - 16:08 #3
Hej.
Jeg søgte lidt rundt herinde og fandt ud af, hvordan man får det udskrevet pænt.
Endelige resultat:

<?php
$adresse = file_get_contents("http://www.snuzzer.dk/sommer/eks.php");
$udskift = array("\t", "  ", "\r\n", "\r");
$udskiftMed = array("&nbsp;", "&nbsp;", "\n", "\n");
$kildekode = str_replace($udskift, $udskiftMed, $adresse);

$find = 1;

$antal = substr_count($kildekode, "<br />") - 1;

$a = array();

while($find <= $antal)
{
    $explode = explode("<br />", $kildekode);

    $dyr = explode("=", $explode[$find]);

    $find++;

    $a[] = "En".$dyr[0]." er ".$dyr[1];
}

function udskriv($array)
{
    foreach ($array as $key => $val)
    {
        echo "{$key}: {$val}<br>\n";
    }
}

udskriv(array_count_values($a));
?>

Mange tak for hjælpen.
- Simon
Avatar billede simseboii Nybegynder
10. juni 2007 - 16:30 #4
Hej igen.
Jeg har fundet ud af at den ikke ligger den hyppigst forekommende øverst, hvordan får man den til det?

- Simon
Avatar billede well_r Nybegynder
10. juni 2007 - 20:15 #5
brug sort?

og fortæl at det er numerical..
Avatar billede simseboii Nybegynder
10. juni 2007 - 20:53 #6
Hej.
Jeg har aldrig rigtig brugt arrays før. Jeg har søgt efter måder at sortere indholdet af et array på, og faldt over sort(), men jeg kunne ikke finde ud af, hvordan jeg skal bruge det i scriptet.
Kan du fortæller mig, hvordan jeg bruger den i scriptet?

- Simon
Avatar billede well_r Nybegynder
10. juni 2007 - 21:18 #7
http://www.w3schools.com/php/func_array_arsort.asp

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");arsort($my_array);
print_r($my_array);
?>

Resultatet:

Array
(
[c] => Horse
[a] => Dog
[b] => Cat
)
Avatar billede simseboii Nybegynder
11. juni 2007 - 06:56 #8
Hej.
Nu virker det præcis, som det skal!
Mange tak for hjælpen.

Det endelige resultat:
function udskriv($array)
{
    arsort($array);

    foreach($array as $key => $val)
    {
        echo "<tr>\n<td style=\"width:20px;\">{$val}</td>\n<td style=\"width:600px;\">{$key}</td>\n</tr>";
    }
}

echo "<table style=\"width:620px;\" cellpadding=\"0\" cellspacing=\"0\">
<tr>\n<td style=\"width:20px;font-weight:bold;\">#</td>\n<td style=\"width:600px;font-weight:bold;\">Sang</td>\n</tr>";

udskriv(array_count_values($a));

echo "</table>";

- Simon
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