Gå til innhold

Erstatte en strengs verdi ved str_replace


Anbefalte innlegg

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
Videoannonse
Annonse

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 av gozzer
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...