Avatar billede -zonic- Nybegynder
29. maj 2008 - 15:32 Der er 8 kommentarer og
1 løsning

lave en meddelelse ved failed to open stream?

hej, jeg har denne fil, som jeg vil have til at skrive en meddelse når det går galt og filen ikke kan åbnes... lige nu er problemet der nemlig....

se på www.skovbakken-badminton.dk/includes/badminton_news2.php


hvordan får jeg den istedet til at skrive "ingen nyheder fundet" så jeg slipper for den fejl når siden jeg henter fra er nede?


<?php

// Hent side som om det var en fil (bliver hentet som et Array)
$dataFile = file("http://www.badminton.dk/Nyheder.aspx");

if ($dataFile != false) {

    $codeLine = "";

    // Kør Array igennem
    foreach ($dataFile as $line_num => $line) {
        // Find linien med nyhederne
        if ($codeLine == "" && strpos($line, 'komponentartikellisten') > 0) {
            $codeLine = utf8_decode($line); // Husk linien og transmogrif tekst fra UTF-8 til ISO-8859-1
        }
    }

    if ($codeLine != "") {
        // Indsæt domain i links
        $codeLine = str_replace('<a href="/Nyheder/', '<a href="http://www.badminton.dk/Nyheder/', $codeLine);
        $codeLine = str_replace('<a href="/Badmintonligaen/', '<a href="http://www.badminton.dk/Badmintonligaen/', $codeLine);
        $codeLine = str_replace('<a href="/EM/', '<a href="http://www.badminton.dk/EM/', $codeLine);

        // Hent koderne mellem disse to stringe:
        $code = strBetween($codeLine, '<td class="komponentartikellisten"><table cellspacing="0" cellpadding="0" width="100%">', '</table>');

        // Fjern uønskede tags ( links er nu kun sepereret med tagget </span> )
        $code = str_replace(array('<tr>','<td class="komponentartikellisten">','<td class="komponentartikelliste">','<span>','</td>','</tr>'), '', $code);

        // Split string op i array ved alle tags </span>
        $arr = explode('</span>', $code);

        // Da koden indeholdte en ekstra </span> i slutningen indeholder array også en ekstra celle
        $antalNyheder = count($arr) - 1;

        // Du kan selv bestemme hvor mange nyheds-links du vil udskrive
        $visNyheder = 5;

        // Check om der i virkeligheder er så mange nyheder
        if ($antalNyheder < $visNyheder) {
        $visNyheder = $antalNyheder;
        }

        // Antal tegn linkene max må vise
        $maxLinkWidth = 27;

        // Udskriv nyhederne
        for ($i = 0; $i < $visNyheder; $i++) {
            echo preg_replace('/<a href="(.*)">(.*)<\/a>[ -]*(.*)/e', "'<dd><p style=\"text-align:center; font-size:8px; color:#CCCCCC; font-weight:bold;\">\\3</p><br /><a class=\"badnews\" style=\"font-weight:normal;\" target=\"_blank\" href=\"\\1\">' . substr('\\2',0,$maxLinkWidth) . ((strlen('\\2') > $maxLinkWidth) ? '...' : '') . '</a></dd>'", $arr[$i]) . "\n";
        }
} else {
      // CodeLine er tom
      echo 'Ingen nyheder fundet';
    }
}
    function strBetween($theLine, $copyAfter, $copyBefore) {
    $theStart = strpos(strtolower($theLine), strtolower($copyAfter)) + strlen($copyAfter);
    if ($theStart > -1) {
        $theEnd = strpos(strtolower($theLine), strtolower($copyBefore), $theStart);
        return substr($theLine, $theStart, ($theEnd - $theStart));
    }else {
        return "-";
    }
}

?>
Avatar billede -zonic- Nybegynder
29. maj 2008 - 16:06 #1
nå... nu kan eksempelfilen ikke bruges mere, da siden igen er oppe... men jeg vil stadig gerne have en løsning?
Avatar billede showsource Seniormester
29. maj 2008 - 16:09 #2
Ved at bruge @ foran file() undertrykker du fejlmeddelser.

$dataFile = @file("http://www.badminton.dk/Nyheder.aspx");
Avatar billede -zonic- Nybegynder
29. maj 2008 - 16:12 #3
hvordan vil man bygge det op?

if(@file("http://adress.dk")) { echo 'fejl'; } 

sådan?
Avatar billede showsource Seniormester
29. maj 2008 - 16:34 #4
Nok mere
if(false == (@file("http://www.exp.dk"))) { echo 'fejl'; }
Avatar billede -zonic- Nybegynder
29. maj 2008 - 16:43 #5
er det ikke det man normalt plejer at løse med et udråbstegn? ;)
Avatar billede showsource Seniormester
29. maj 2008 - 16:52 #6
njahhh, hvis du prøver med et udråbstegn, og siden ikke er oppe, kører scriptet i den tid som er sat som max_execution_time ( lign. ) i php.ini, hvorimod med false kommer den med det samme.
Men der kan jo også være flere grunde til en fejl.
Og evt. bliver du måske henvist til en error side
Avatar billede -zonic- Nybegynder
29. maj 2008 - 16:56 #7
uha.. det lyder sgu farligt.. nå.. men tak for hjælpen..


smid et svar!
Avatar billede -zonic- Nybegynder
11. juni 2008 - 16:16 #8
du får lige et par dage endnu ellers lukker jeg!
Avatar billede showsource Seniormester
11. juni 2008 - 19:35 #9
Ok
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