Avatar billede jacobs1 Nybegynder
13. marts 2010 - 16:07 Der er 1 kommentar og
1 løsning

Trim af url'er

Hej.
Jeg sidder lige og leger med et lille php script.
Jeg har nogenlunde fået det til at virke. Men det må kunne kodes smartere. Håber der er nogle der har et forslag.

Det jeg gerne vil er at når folk søger på min side efter en url adresse. Filtere scriptet sådan at jeg får en variabel med kun domænet og en variabel med hele url'en.

For eksempel:

Hvis man søger på:
http://www.eksperten.dk/spm/Programmering/Script/PHP/opret

Får jeg værdierne:
eksperten.dk
eksperten.dk/spm/Programmering/Script/PHP/opret

Hvis man søger på en url med et subdomæne:
http://test.eksperten.dk/spm/Programmering/Script/PHP/opret

Får man værdierne:
eksperten.dk
test.eksperten.dk/spm/Programmering/Script/PHP/opret

Hvis man bare søger på et domaine:
http://eksperten.dk eller http://www.eksperten.dk

Får man værdierne:
eksperten.dk
eksperten.dk

Min Kode ser sådan her ud, jeg tror også jeg har et problem hvis søger efter en url med æøå i:

<form name="form" action="trim.php" method="get">
  http:// <input type="text" name="q" />
  <input type="submit" name="Submit" value="Search" />
</form>

<?php

function getholePath($url)
{
    if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) === FALSE)
    {
        return false;
    }
    /*** get the url parts ***/
    $parts = parse_url($url);
    /*** return the host domain ***/
    //return $parts['path'];
  return $parts['host'].$parts['path'];
  //return $parts['scheme'].'://'.$parts['host'];
}


function getDomain($url)
{
function getsearchDomain($url)
{
    if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) === FALSE)
    {
        return false;
    }
    /*** get the url parts ***/
    $parts = parse_url($url);
    /*** return the host domain ***/
    return $parts['host'];
   
  //return $parts['scheme'].'://'.$parts['host'];
}

$domainStr = getSearchDomain($url);

$arr = (explode('.', getSearchDomain($url), -1));

if (count($arr)>1)
{
$domainStr = substr(getSearchDomain($url),strpos(getSearchDomain($url),".")+1);
}
return $domainStr;
}

  // Get the search variable from URL
 
  $var = $_GET['q'];
  $trimmed = trim($var); //trim whitespace from the stored variable
  $trimmeddomain = $trimmed;
  $trimmedurl = $trimmed;
 
  if ($trimmed == "")
  {
  echo "<p>Please enter a search...</p>";
  exit;
  }

// check for a search parameter
if (!isset($var))
  {
  echo "<p>We dont seem to have a search parameter!</p>";
  exit;
  }

//tjekker op der er http:// foran søgningen
if (preg_match(" /^http:\/\// ", $trimmed))
{
  $trimmed = $trimmed;
}
else
{
$trimmed ="http://".$trimmed;   
}

$trimmeddomain = getDomain($trimmed);


$trimmedurl = getholePath($trimmed);

if (preg_match(" /^www./ ", $trimmedurl))
{
    $trimmedurl = substr($trimmedurl,strpos($trimmedurl,"www")+4);
}


echo $trimmeddomain;
echo "<br /><br />";

echo  $trimmedurl;
?>
Avatar billede intenz Novice
13. marts 2010 - 20:29 #1
Til at få domæne navnet findes der en god funktion her:
http://stackoverflow.com/questions/399250/going-where-php-parse-url-doesnt-parsing-only-the-domain

Til resten af url'en kan du bruge parse_url:
http://php.net/manual/en/function.parse-url.php (sammensæt den med domænenavnet du får fra ovenstående funktion og path og query fra parse_url).
Avatar billede jacobs1 Nybegynder
14. marts 2010 - 09:27 #2
Tak for svaret. det prøver jeg at kigge på.
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