Jos yritän includettaa tiedostoa jonka sisältö on tämännäköinen:
<?php $haku = strtolower(trim($_GET['search'])); if (empty($haku)) { Tyhja(); die; } if (file_exists("hakusanat.txt") or TiedostoaEiLoydy()) $hakusanat = file("hakusanat.txt"); for ($i = 0; $i < count($hakusanat); $i++) { $tiedot = explode("|", $hakusanat[$i]); if (eregi($haku, $tiedot[0])) $laskuri++; } if ($laskuri == 0) { EiTuloksia(); } unset ($hakusanat); unset ($i); unset ($tiedot); if ($laskuri == 1) { $laskuri = $laskuri." sivu"; } if ($laskuri > 1) { $laskuri = $laskuri." sivua"; } echo "<p>Löydetty yhteensä $laskuri hakusanalla <b>".chr(34).trim($_GET['search']).chr(34)."</b>.</p>\n"; $hakusanat = file("hakusanat.txt"); for ($i = 0; $i < count($hakusanat); $i++) { $tiedot = explode("|", $hakusanat[$i]); if (eregi($haku, $tiedot[0])) echo "<p><a href=\"$tiedot[3]\" target='_top'>$tiedot[1]</a><br>$tiedot[2]</p>\n"; } function Tyhja() { echo "<p>Käyttääksesi hakukonetta, sinun täytyy kirjoittaa ensin hakusana.</p>"; die; } function TiedostoaEiLoydy() { echo "<p>Haun suorittamisessa tapahtui virhe. </p>"; die; } function EiTuloksia() { echo "<p>Haun tulokset sanalla <b>".chr(34).trim($_GET['search']).chr(34)."</b>.</p>\n"; echo "<p>Ei valitettavasti löytynyt yhtään sivustoa, mikä vastaisi antamaasi hakusanaa.</p>"; die; } ?>
kaikki includetus-koodin jälkeiset tekstit häviää. Mistä tämä johtuu?
die (lopettaa koodin suorituksen). Aloita funkkarit pienellä alkukirjaimella ja älä tulosta funkkareissa, vaan palauta dataa. En suosittelisi die:tä käyttämään muutenkaan, sillä se rikkoo sivumerkinnän (asdf, html-koodin) ellet sitten siisti tidylla tms.
Kiitos, miten "palauta dataa". Huono kuin olen : (
esim.
<?php function tiedostoaEiLoydy() { return 'Haun suorittamisessa tapahtui virhe'; } $ongelma = tiedostoaEiLoydy(); echo '<p>' . $ongelma . '</p>'; ?>
Jos et käytä regexp-hakua niin strpos tms. vastaava on nopeampi, ja unset on komentorakenne, joten jos sitä tahtoisi erottaa jotenkin funktioista niin
unset $var;
Aihe on jo aika vanha, joten et voi enää vastata siihen.