IRRupt Skrevet 28. september 2005 Del Skrevet 28. september 2005 Hei! Jeg prøver å foreta et søk i en streng. Dersom den finner verdien angitt i $hosts skal den erstattes av $displayhosts (dette går greit). Men jeg vil at dersom man finner en match så vil jeg at $hostname skal bli ertattet av $displayhosts. Så istedenfor at dette vises: XX.80-203-XX.Nextgentel.com skal dette vises Nextgentel Her er scriptet jeg bruker: <?php $ip = $_SERVER['REMOTE_ADDR']; $fullhost = gethostbyaddr($ip); $hosts = array('nextgentel', 'telenor', 'bluecom'); $displayhosts = array("Nextgentel", "Telenor", "Bluecom"); $hostname = str_replace($hosts, $displayhosts, $fullhost); echo $hostname; Hvordan er dette mulig? Lenke til kommentar
gozzer Skrevet 28. september 2005 Del Skrevet 28. september 2005 (endret) Hva med noe så enkelt som dette: $ip = $_SERVER['REMOTE_ADDR']; $fullhost = gethostbyaddr($ip); $isps = array("Nextgentel", "Telenor", "Bluecom"); $out = ""; foreach ($isps as $isp) { if (stristr($fullhost, $isp)) { $out = $isp; break; } } echo "Din ISP later til å være $out"; Edit: Det kan være lurt å sjekke om $out inneholder noe etter løkken. F.eks.: if (empty($out)) { echo "Jeg klarte ikke å finne navnet på din ISP"; } else { echo "Din ISP later til å være $out"; } Endret 28. september 2005 av gozzer Lenke til kommentar
IRRupt Skrevet 28. september 2005 Forfatter Del Skrevet 28. september 2005 Ja så enkelt kan det gjøres. Takker så meget Lenke til kommentar
gozzer Skrevet 28. september 2005 Del Skrevet 28. september 2005 Nå gjorde jeg noe så vågalt som å faktisk teste koden jeg gav deg Da så jeg et potensielt problem, og det er at f.eks. Telenor vil vises som *online.no, ikke *telenor.no. Derfor, kan dette være en løsning: <?php // hent inn diverse info $ip = $_SERVER['REMOTE_ADDR']; $fullhost = gethostbyaddr($ip); $isps = array('nexgentel.no' => 'Nextgentel', 'online.no' => 'Telenor', 'bluecom.no' => 'Bluecom'); // kjør gjennom alle ISP-ene våre foreach ($isps as $host => $isp) { if (stristr($fullhost, $host)) { $out = $isp; break; } } // skriv ut resultatet if (isset($out)) { echo "Din ISP later til å være $out"; } else { echo "Jeg klarte ikke å finne navnet på din ISP"; } ?> Lenke til kommentar
IRRupt Skrevet 28. september 2005 Forfatter Del Skrevet 28. september 2005 (endret) hmm... det siste scriptet printer alltid "Jeg klarte ikke å finne navnet på din ISP" Finner ikke ut hvorfor EDIT: fant ut av det, manglet en liten "t" i nextgentel. Takker gozzer Endret 28. september 2005 av IRRupt Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå