Avatar billede bas Forsker
01. juni 2004 - 12:18 Der er 9 kommentarer og
1 løsning

Tjek for http i link ?

Hej

Jeg har en web adresse, der bliver hentet fra en database. Adressen skal laves om til et link, som linker til hjemmesiden.
Det gør nedenstående script også fint nok, så længer der er skrevet http:// foran adressen (klart nok).



Nu vil jeg høre, om man kan udbygge scriptet
til at tjekke, om der er skrevet http:// foran, og hvis der ikke er, om man så kan få php til at sætte det ind automatisk, hvis det ikke er der i forvejen.

Jeg tænker på, om man kan lave noget if (!isset http://) halløj.

Ellers handler det vel bare om at validere den formular det skal postes i ordentligt.

echo "<a class='underlink' href=\"$row[URL]\"target='_blank'\">";
  echo $row['URL'];"</a>";

Jeg har en række andre resultater,
som sammen med URL bliver henter henter
vha.:
while($row = mysql_fetch_assoc($res)) {

Jeg har fået nedenstående forslag, men det virker
ikke helt efter hensigten - måske fordi der bliver
defineret en ny variabel ($str), som $row er lig med ?

$str = $row['URL'];
$str = substr($str,0,7);
if($str = "http://") $url = $row['URL'];
else $url = "http://".$row['URL'];

echo "<a class='underlink' href=\"$URL\"target='_blank'\">";
  echo $row['URL'];"</a>";

Kan nogen hjælpe mig med at få stumperne til at falde på plads ?


På forhånd tak.

Hilsen Martin
Avatar billede Slettet bruger
01. juni 2004 - 12:29 #1
Du kan måske klare den med funktionen preg_match()
http://dk.php.net/manual/en/function.preg-match.php

Og følge dette eksempel: (taget fra ovenstående url og modificeret til dit behov)

<?php
if (preg_match("http:////", $row[URL])) {
  echo "";
} else {
  echo "http://";
}
?>

- agtigt. Jeg tror det skal være 4 /'er, da de skal escapes.

Jeg har dog ikke prøvet det i praksis, men måske kan det give et hint.

--
pacroon
Avatar billede riversen Nybegynder
01. juni 2004 - 12:34 #2
du escaper da med \
Avatar billede avminarm Juniormester
01. juni 2004 - 12:35 #3
du kan evt. hente inspiration på http://www.ljweb.com/usefulscripts/ - kig på hans "tagster"
Avatar billede bas Forsker
01. juni 2004 - 20:49 #4
Nu har jeg fået nedenstående til at virke.
Er der nogle umiddelbare problemer/fælder i den løsning ?

$res = mysql_query("SELECT URL FROM tabel") or die(mysql_error());

while($row = mysql_fetch_assoc($res)) {

$str = $row['URL'];
$str = substr($str,0,7);

// Hvis http:// IKKE er sat

if ($str != "http://") {
echo "<a class='underlink' href=\"http://".$row['URL']."\"target='_blank'\">";
echo $row['URL'];"</a>";

}
else
{


// Hvis http:// ER sat

echo "<a class='underlink' href=\"$row[URL]\"target='_blank'\">";
echo $row['URL'];"</a>";
}
}

/Martin
Avatar billede bas Forsker
02. juni 2004 - 23:13 #5
Jeg vender lige tilbage til nedenstående,
da den ser lidt smart ud.


$str = $row['URL'];
$str = substr($str,0,7); //Tæller de første 7 tegn
if($str = "http://") $url = $row['URL']; //Tjekker om de første 7 tegn er Http:// hvis det er bliver $url sat til den orginale adresse
else $url = "http://".$row['URL']; //Hvis ikke bliver der sat Http:// foran

echo "<a class='underlink' href=\"$url\" target='_blank'>";
echo $row['URL'];
echo "</a>"; // her skriver den så linket med <a class='underlink' href=" http://www.adresse.dk"  target='_blank'> www.adresse.dk/  http://www.adresse.dk!

Problemet er, at hvis der i databasen IKKE er skrevet http:// foran domænet,
skriver scriptet "http://www.mit_domæne.dk/mappe/www.domæne.dk" i stedet for bare at skrive "http://www.domæne.dk (altså bare sætte http:// foran).

Hvor ligger fejlen, jeg er ved at give op ?

På forhånd tak.

Hilsen Martin
Avatar billede avminarm Juniormester
03. juni 2004 - 21:53 #6
du mangler to ==

if($str == "http://")

jeg ville nok gøre sådan her:

$str = $row['URL'];
$tjek = substr($str,0,7); //Tæller de første 7 tegn
if($strtjek == "http://") {
    $url = $row['URL']; //Tjekker om de første 7 tegn er Http:// hvis det er bliver $url sat til den orginale adresse
} else {
    $url = "http://".$row['URL']; //Hvis ikke bliver der sat Http:// foran
}

echo "<a class='underlink' href=\"$url\" target='_blank'>".$row['URL']."</a>"; // her skriver den så linket med <a class='underlink' href=" http://www.adresse.dk"  target='_blank'> www.adresse.dk/  http://www.adresse.dk!
Avatar billede avminarm Juniormester
03. juni 2004 - 21:54 #7
hov $tjek skal være $strtjek :o)
Avatar billede bas Forsker
03. juni 2004 - 22:20 #8
> avminarm

Mange tak, det ser ud til at det script du har skrevet virker
helt perfekt - både med og uden http:// :o)

Poster du lige et svar ?
Det kan godt være jeg tester lidt mere, inden jeg lukker spørgsmålet.

Hilsen Martin
Avatar billede bas Forsker
09. september 2004 - 15:02 #9
lukker
Avatar billede avminarm Juniormester
09. september 2004 - 15:05 #10
halt ok - jeg har ikke fået mails fra exp i st stykke tid, men nu kører det igen? godt du fik det til at virke :o)
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