begin process at 2012 05 27 18:13:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > RACCOURCIR INTELLIGEMMENT UNE URL POUR L'AFFICHAGE SUR UNE PAGE

RACCOURCIR INTELLIGEMMENT UNE URL POUR L'AFFICHAGE SUR UNE PAGE


 Information sur la source

Note :
3 / 10 - par 1 personne
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :url, forum, blog Niveau :Débutant Date de création :05/10/2006 Vu :5 757

Auteur : olid

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cette fonction réduit, quand c'est nécessaire, la longueur d'une URL en vue de l'afficher sur une page Web pour que la mise en page de celle-ci ne soit pas déformée par une URL trop grande.

Plutot que de supprimer la fin de l'URL, la fonction remplace les noms de dossier au milieu de l'URL par des points ; concrétement par "(...)".

Inutile de préciser que ces URLs ne marchent plus, évidemment :o|

Source

  • function ShortDisplayURL($FullPath,$MaxLenght=150)
  • {
  • If (strlen($FullPath) > $MaxLenght)
  • {
  • //Suppression des arguments et fragment si nécessaire
  • if (strpos($FullPath,"#",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"#",0));
  • if (strpos($FullPath,"?",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"?",0));
  • If (strlen($FullPath) > $MaxLenght)
  • {
  • // Decompose l'URL
  • $FullPathParsed=parse_url($FullPath);
  • // Parties minimales
  • $RootPath = $FullPathParsed['scheme'].'://'.$FullPathParsed['host'];
  • // Slash de fin si dossier
  • if (substr($FullPathParsed['path'],-1) == '/')
  • {
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1);
  • $isFolder = TRUE;
  • }
  • else
  • {
  • $isFolder = FALSE;
  • }
  • $PathBaseName = basename($FullPathParsed['path']);
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
  • // Pas besoin de citer l'index
  • if (($PathBaseName == 'index.html') OR ($PathBaseName == 'index.php') OR ($PathBaseName == 'index.php3'))
  • {
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
  • $PathBaseName = basename($FullPathParsed['path']);
  • $isFolder = TRUE;
  • }
  • if ($PathBaseName == '')
  • {
  • if (strlen($RootPath) > $MaxLenght) $RootPath = $FullPathParsed['scheme'].'://'.ShortDisplayHost($FullPathParsed['host'],$MaxLenght - strlen($FullPathParsed['scheme']) - 3);
  • return $RootPath;
  • }
  • else if ($FullPathParsed['path'] == '')
  • {
  • return $RootPath.'/…/'.$PathBaseName;
  • }
  • else if ((strlen($RootPath)+strlen($PathBaseName)+3) >= $MaxLenght)
  • {
  • return $RootPath.'/…/'.$PathBaseName;
  • }
  • else
  • {
  • // Reduction du chemin
  • while ((strlen($RootPath)+strlen($PathBaseName)+strlen($FullPathParsed['path'])+3) > $MaxLenght)
  • {
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen(basename($FullPathParsed['path']))-1);
  • }
  • if ($FullPathParsed['path'] == '')
  • {
  • return $RootPath.'/…/'.$PathBaseName;
  • }
  • else
  • {
  • return $RootPath.$FullPathParsed['path'].'/…/'.$PathBaseName;
  • }
  • }
  • }
  • Else
  • {
  • return $FullPath;
  • }
  • }
  • Else
  • {
  • return $FullPath;
  • }
  • }
  • function ShortDisplayHost($FullHost,$MaxLenght=80)
  • {
  • If (strlen($FullHost) > $MaxLenght)
  • {
  • if (substr_count($FullHost,'.') >= 2)
  • {
  • return $FullHost;
  • }
  • else if (substr_count($FullHost,'.') == 1)
  • {
  • $extension = substr($FullHost,strpos($FullHost,".",0));
  • $FullHost = substr($FullHost,0,strpos($FullHost,".",0));
  • $FullHost = substr($FullHost,0,10).'(…)'.substr($FullHost,-1*(10+3+1+strlen($extension))).'.'.$extension;
  • }
  • else
  • {
  • $FullHost = substr($FullHost,0,$MaxLenght-3).'(…)';
  • }
  • }
  • else
  • {
  • return $FullHost;
  • }
  • }
  • function ShortDisplayName($FullName,$MaxLenght=50)
  • {
  • If (strlen($FullName) > $MaxLenght)
  • {
  • $FullName = substr($FullName,0,$MaxLenght-3).'(…)';
  • return $FullName;
  • }
  • else
  • {
  • return $FullName;
  • }
  • }
function ShortDisplayURL($FullPath,$MaxLenght=150)
	{
    If (strlen($FullPath) > $MaxLenght)
		{
		//Suppression des arguments et fragment si nécessaire
		if (strpos($FullPath,"#",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"#",0));
		if (strpos($FullPath,"?",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"?",0));
		
	    If (strlen($FullPath) > $MaxLenght)
			{
			// Decompose l'URL
			$FullPathParsed=parse_url($FullPath);
			// Parties minimales
	        $RootPath = $FullPathParsed['scheme'].'://'.$FullPathParsed['host'];
			// Slash de fin si dossier
			if (substr($FullPathParsed['path'],-1) == '/')
				{
				$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1);
				$isFolder = TRUE;
				}
			else
				{
				$isFolder = FALSE;
				}
			$PathBaseName = basename($FullPathParsed['path']);
			$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
			// Pas besoin de citer l'index
			if (($PathBaseName == 'index.html') OR ($PathBaseName == 'index.php') OR ($PathBaseName == 'index.php3'))
				{
				$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
				$PathBaseName = basename($FullPathParsed['path']);
				$isFolder = TRUE;
				}
								
			if ($PathBaseName == '')
				{
				if (strlen($RootPath) > $MaxLenght) $RootPath = $FullPathParsed['scheme'].'://'.ShortDisplayHost($FullPathParsed['host'],$MaxLenght - strlen($FullPathParsed['scheme']) - 3);
				
				return $RootPath;
				}
			else if ($FullPathParsed['path'] == '')
				{
				return $RootPath.'/…/'.$PathBaseName;
				}
			else if ((strlen($RootPath)+strlen($PathBaseName)+3) >= $MaxLenght)
				{
				return $RootPath.'/…/'.$PathBaseName;
				}
			else
				{
				// Reduction du chemin
				while ((strlen($RootPath)+strlen($PathBaseName)+strlen($FullPathParsed['path'])+3) > $MaxLenght)
					{
					$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen(basename($FullPathParsed['path']))-1);
					}
					
				if ($FullPathParsed['path'] == '')
					{
					return $RootPath.'/…/'.$PathBaseName;
					}
				else
					{
					return $RootPath.$FullPathParsed['path'].'/…/'.$PathBaseName;
					}
				}
			}
	    Else
			{
	        return $FullPath;
			}
		
		}
    Else
		{
        return $FullPath;
		}
	}
	
function ShortDisplayHost($FullHost,$MaxLenght=80)
	{
	If (strlen($FullHost) > $MaxLenght)
		{
		if (substr_count($FullHost,'.') >= 2)
			{
			return $FullHost;
			}
		else if (substr_count($FullHost,'.') == 1)
			{
			$extension = substr($FullHost,strpos($FullHost,".",0));
			$FullHost = substr($FullHost,0,strpos($FullHost,".",0));
			$FullHost = substr($FullHost,0,10).'(…)'.substr($FullHost,-1*(10+3+1+strlen($extension))).'.'.$extension;
			}
		else
			{
			$FullHost = substr($FullHost,0,$MaxLenght-3).'(…)';
			}
		}
	else
		{
		return $FullHost;
		}
	}
	
function ShortDisplayName($FullName,$MaxLenght=50)
	{
	If (strlen($FullName) > $MaxLenght)
		{
		$FullName = substr($FullName,0,$MaxLenght-3).'(…)';
		return $FullName;
		}
	else
		{
		return $FullName;
		}
	}



 Sources du même auteur

GÉNÉRER UN LOG AU FORMAT APACHE POUR FAIRE DES STATISTIQUES ...
RÉSUMER UN TEXTE SANS COUPER LES MOTS OU PHRASES
TEMPS ÉCOULÉ (DURÉE) ENTRE 2 DATES SOUS FORME LITTÉRAL NATUR...
AFFICHER UNE DATE-HEURE RÉCENTE DANS UN FORMAT NATUREL ET LI...
Source avec Zip MY LAST RSS, CLASSE POUR PARSER ET FUSIONNER PLUSIEURS FEEDS...

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FORUM PERSO EN PHP par David78390
Source avec Zip CREATED SOME TINY URL par ledamss
VÉRIFICATION DES URL VALIDE AVEC PHP par dilar
REDIRECTION D'URL par bonhommecrea
Source avec Zip GLOBALSYS: SYSTÈME DE GESTION DE SITES (PORTAIL) par Mc2

Commentaires et avis

Commentaire de Sniperman113 le 05/10/2006 22:05:51

Wordwrap tout aussi efficace et l'url marche toujours :)

Commentaire de olid le 06/10/2006 13:03:15

Oui, pourquoi pas... d'ailleur, on peut simuler un wordwrap via les styles CSS.

Mais le but, ici, c'est que l'URL soit affichée sur une seule ligne... C'est presque comme ce que fait phpBB

Commentaire de codefalse le 17/10/2006 11:31:41 administrateur CS

Tu pourrais aussi faire plus simple éventuellement :
en algo :
tu prends la chaine, tu lui garde n charactères au début ( substr(machaine, 0, n); ), ensuite tu récupère n caractères en partant de la fin ( substr(machaine, -6); ), et tu affiche le premier substr, trois petits points, et ensuite le deuxieme substr

sinon tu peux aussi afficher qu'apres le dernier slash pour la derniere partie :)

Mais bon l'idée n'est pas mal :)

Commentaire de olid le 17/10/2006 12:46:21

Oui, ca serait pas tres dur à faire, mais je voulais que l'URL soit raccourcie en gardant une structure facile à comprendre... Mais si tu regarde, c'est un peu ce que je voulais faire pour le nom de domaine (fonction Host). D'ailleur, cette fonction est incompléte :o|

La partie pour le nom de domaine est un peu brutale, on pourrait appliquer le meme principe en décomposant les mots séparés par un tiret... Si ya des volontaires, d'avance merci ;o)

Commentaire de codefalse le 17/10/2006 21:47:14 administrateur CS

:)
jtrouve aussi que certaines fonctions en php seraient à améliorer mais bon .. ca reste un bon langage pour pas trop se prendre la tête en réalisant de bonnes applications :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Forum ? [ par Michael ] Quelqu'un sait comment marche le forum de arnotic ? Je comprends rienQuand je lance index.php3, j'ai une page blanche ! (j'ai essayé avec easyphp et s Construire un forum rival de phpBB [ par LiBe444 ] Rendez-vous sur l'adresse http://membres.lycos.fr/libe4442003 puis donnez moi des idées, des conseils, tout ce qu'il vous passe par la tête...Merci d' Chat à partir du login et mdp du forum [ par jmobylette ] Bonjour ! G un forum phpBB2 et je voudrais faire un chat à part mais en utilisant les mêmes pseudos et mdp ! J'ai donc fait un formulaire : http://jmo suprimer un cookies !?! [ par nico606 ] Slt, je voudrais savoir s'il est possible de suprimer un cookie, si oui quel serait la fonction ?.:Nico606:.[<a href="http://kidlogis.com/nico606" redirection pour la première visite [ par nico606 ] Slt je voudrais savoir si quelqu'un connaissais un script qui permet de rediriger le visiteur s'il s'agit de sa premiere visite sur le site, du genre Menu déroulants [ par Linuss ] Bonjour à tous, là je ne sais pas trop dans quel forum poster, mais j'aimerais créer un menu ou il y est un mouvement lors du passage de la souris. Ex url de la page [ par zut69 ] Bonjour,j'inclus un menu &#224; toutes les pages de mon site, mais le probl&#232;me, c est que maintenant, je voudrais l'inclure dans le forum aussi, Reconnaissance automatique d'une URL [ par websmiley ] Bonjour à tous,je reviens  vous pour une petite question.Voilà, j'ai une variable issue d'une database contenant du texte.Ma question est la suivante: Introduire forum dans mon site [ par Ohmuwithholy ] Bonjour à toutes et à tous,J'ai un forum SMF et un site internet. Et j'aimerai INTEGRER le forum DANS mon site. Un peu comme le forum sur le site suiv affiliation [ par roufer ] je me suis inscris sur une plate forme d'affiliation et je ne sais pas comment faire pour promouvoir des produits . on me dis qu'il faut que j'aille s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales