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 / Exemple :
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;
}
}
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.