controle

Status
Niet open voor verdere reacties.

Barry_127

Gebruiker
Lid geworden
20 jan 2003
Berichten
478
hallo iedereen

hoe kan ik een controle functie (liefst met if statement) maken die controleerd of er wel een hyper link is ingevuld,

dus hij moet kijken of er op z'n minst 1 punt inzit
of er http:// instaat
en als er www instaat of er dan op zn minst 2 punten in staan

alvast bedankt :D
 
Reguliere expressies (lastig woord :p) zijn de oplossing :).
PHP:
<?
$link = "http://www.JouWdoMeIN.nL";
if(preg_match("/^(http:\\/\\/www\\.)(.+)(\\.){1}([a-zA-Z]){2,3}$/Us",$link) == TRUE)
{
echo "Link is geldig";
}
else
{
echo "Link is niet geldig";
}
?>
Waarschijnlijk ben je hier niet mee bekent, dus ik leg ff uit wat 't doet :).
De string moet beginnen (vandaar die ^, die staat voor dat hij ergens mee moet beginnen) met "http://www.", gevolgd door 1 of meer willekeurige tekens, dus http://www..nl zal niet werken, tussen de 2 punten zitten geen tekens ;).
Na die willekeurige tekens moet 1 punt komen.
Na die punt moeten 2 óf 3 tekens volgen waar de string ook op moet eindigen, die tekens moeten bestaan uit a t/m z, of hoofdletters a t/m z. Deze 2 of 3 heb ik genomen, omdat je wel een domein als .co.uk kunt hebben, uk = 2 tekens (net als nl eigenlijk), maar je kan ook een .com adres hebben, met 3 tekens. Verder weet ik niets af van een domein dat op .395 of zo eindigt, dus cijfers heb ik uitgesloten ;).

Succes :thumb:

// Edit: reguliere expressies op 't forum deden ff moeilijk, ff aangepast :).
 
Laatst bewerkt:
bedankt :D

weet ook gelijk wat het betekent kan het dus weer voor andere dingen gebruiken :D
 
PHP:
if(preg_match("/^(http:\\/\\/)(.+)(\.){1}([a-zA-Z]){2,3}$/Us",$link) == TRUE)

suc6 :thumb:
 
PHP:
if(preg_match("/^(http:\\/\\/)([a-zA-Z]){2,3}$/Us",$link) == TRUE)

sorry klein foutje van mij :eek:


edit: zat nog een fout in nu staat ie goed denk ik
 
Geplaatst door Barry_127


ik weet wel waar de fout zit maar weet daarvan niet de precieze oplossing je moet hier in de code: [a-zA-Z] een punt verwerken weet niet precies hoe dat moet maar dan loop je wel het risico dit soor berichten te krijgen: http://.......nl

suc6

Zal wel eens wat proberen. Bedankt voor je moeite!
 
graag gedaan,

als je er nou echt niet uitkomt nog even melden en ook daarbij wat je hebt geprobeerd kijk ik er nog ff naar :D
 
Okee, ik heb nu dit:

Code:
<?
$link = "http://www.jouwdomein.nl/index2.php";
	if(preg_match("/^(http:\/\/[_a-z0-9-]+([_a-z0-9-]+)*\.)[_a-z0-9-]+([_a-z0-9-]+)*(\.){1}([a-zA-Z]){2,3}$/Us",$link) == TRUE)

{
	echo "Link is geldig";
}
	else
	{
		if(preg_match("/^(http:\/\/[_a-z0-9-]+([_a-z0-9-]+)*\.)[_a-z0-9-]+([_a-z0-9-]+)*(\.){1}([a-zA-Z]){2,3}(\/)/Us",$link) == TRUE)

	{
		echo "Link is geldig";
	}
		else
	{
		echo "Link is niet geldig";
	}

}
?>

Eerst wordt er gecontroleert of er begonnen wordt met http://, dan of er iets staat (letters, cijfers, - of _), gevolgd door een punt. Dan weer of er iets staat (letters, cijfers, - of _) en dan weer een punt. En dan of er een domein is ingevoerd. Is dat het geval dan krijg je de melding: link is geldig.

Is dat niet zo, dan wordt er nog gekeken of er achter de domein een / staat gevolgd door en dan gevolgd door wat. Hierdoor is het mogelijk om ook http://www.jouwdomein.nl/index2.php als geldig adres op te geven.

Alleen heb ik nu nog 1 probleem, een domein als co.uk wordt niet meer herkent. Wie weet de oplossing?

En is dit script niet makkelijker te maken?
 
Laatst bewerkt:
Ja kijk nu wil je dus een wat lastiger iets ;).
Nu heb je geen controle meer over waar het einde is. Eerst wist je dat na de laatste punt 2 of 3 tekens moesten komen, maar nu mogen daarna ook nog tekens komen waardoor je geen einde hebt. Je zal nu meerdere technieken moeten gebruiken, explode() en reguliere expressies. Allereerst moet je explode() op / gebruiken. Hierdoor kun je het domein te pakken krijgen. En dan gewoon de regexp weer ... (ik heb 'm aangepast btw, dat www is niet verplicht enzo :)).
Het scriptje:
PHP:
<?
$link = "http://subdomein.jouwdomein.co.uk";
$arraystukken = explode("/",$link);
  if(count($arraystukken) < 3)
  {
  $link = FALSE;
  }
  else
  {
  $domein = ($arraystukken[0] . "/" . $arraystukken[1] . "/" . $arraystukken[2]);
    if(preg_match("/^(http:\\/\\/){1}([a-z0-9_-]+){0,1}(\\.){0,1}([a-z0-9_-]+)(\\.){1}([a-z\\.]){2,5}$/Usi",$domein) == TRUE)
    {
    $link = TRUE;
    }
    else
    {
    $link = FALSE;
    }
  }

  if($link == TRUE)
  {
  echo "Link is geldig";
  }
  else
  {
  echo "Link is niet geldig";
  }
?>
Succes :thumb:

// Edit: had eigen websiteadres nog in script staan :eek:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan