Parser une url ftp

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 966 fois - Téléchargée 26 fois

Contenu du snippet

Cette fonction sépare tous les élements importants d'une URL ftp. Je pense que j'ai traité toutes les possibilités d'adresse. Si j'en ai oublié une, merci de me le faire savoir.

Différents types traités :
- ftp://ip/
- ftp://ip:port/
- ftp://login:password@ip/
- ftp://login:password@ip:port/

Source / Exemple :


<?php
	define('DEFAULT_PORT', 21);
	define('DEFAULT_LOGIN', 'Anonymous');
	define('DEFAULT_PASSW', 'anonymous@plifplaf.net');

	$url = 'ftp://192.168.0.1:4121/test/';
			
	function parse_ftp_url($url)
	{
		$exp = array(
			'^(.+):(.*)@(.+):([0-9]+)(.*)$', 	// login:passwd@ip:port/path
			'^(.+):(.*)@([^/]+)(.*)$', 		// login:passwd@ip/path
			'^(.+):([0-9]+)(.*)$', 			// ip:port/path
			'^([^/]+)(.*)$' 			// ip/path
		);
							
		if ( substr($url, 0, 6) == 'ftp://' )
			$url = substr($url, 6);
											
		$n = sizeof($exp);
				
		for ( $i = 0; $i < $n; ++$i )
		{
			if ( ereg($exp[$i], $url, $out) )
			{
				switch($i)
				{
					case 0:
						return(
							array(
								'server' 	=> $out[3],
								'port'		=> $out[4],
								'login'		=> $out[1],
								'passw'		=> $out[2],
								'path'		=> $out[5] == '' ? '/' : $out[5]
							)
						);
							
					case 1:
						return(
							array(
								'server' 	=> $out[3],
								'port'		=> DEFAULT_PORT,
								'login'		=> $out[1],
								'passw'		=> $out[2],
								'path'		=> $out[4] == '' ? '/' : $out[4]
							)
						);
								
					case 2:
						return(
							array(
								'server' 	=> $out[1],
								'port'		=> $out[2],
								'login'		=> DEFAULT_LOGIN,
								'passw'		=> DEFAULT_PASSW,
								'path'		=> $out[3] == '' ? '/' : $out[3]
							)
						);
								
					case 3:
						return(
							array(
								'server' 	=> $out[1],
								'port'		=> DEFAULT_PORT,
								'login'		=> DEFAULT_LOGIN,
								'passw'		=> DEFAULT_PASSW,
								'path'		=> $out[2] == '' ? '/' : $out[2]
							)
						);							
				} // switch
			} // if 
		} // for
				
		return(FALSE);
	} // end of function
			
	$res = parse_ftp_url($url);
			
	if ( $res == FALSE )
	{
		echo('L\'URL <b>' . $url . '</b> est invalide<br />' . "\n");
	}
	else
	{
		print_r($res);
	}
			
?>

Conclusion :


La fonction retourne FALSE si l'url passée en argument ne correspond à aucun masque, sinon, elle retourne le tableau contenant les informations.
N'hésitez pas à me le faire savoir s'il y a un quelquonque bug...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
14 juin 2006

Comment cela se passe dans le cas où le mot de passe contient le caractère @ ?
De quelle forme se présente l'url ?
Messages postés
163
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
8 mai 2010

juste pour signaler que j'aime bien tes comment en fin d'accollade pour rappelle l'instruction qui se termine ^_^ sympa
Messages postés
6
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
31 octobre 2005

Exellent script, je suis l'user d'irc qui en avais besoin ^^, merci beaucoup et bravo !
Messages postés
132
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
10 février 2012

bien vu... j'ai fait cette fonction pour un user du chan irc qui en avait besoin... j'ai pas pris la peine de vérifier dans la doc si la fonction existait... c'est pas grave, ça m'aura été bénéfique : j'ai appris les expressions regulières comme ça.. et ça pourra peut etre aider quelqu'un a comprendre les expressions régulières.. voila :d
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,

pas mal mais matte ceci :

http://fr.php.net/manual/fr/function.parse-url.php

a +

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.