01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
|
|
<?php
/******************************************************************************/
/* */
/* __ ____ */
/* ___ / / ___ / __/__ __ _____________ ___ */
/* / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-< */
/* / .__/_//_/ .__/___/\___/\_,_/_/ \__/\__/___/ */
/* /_/ /_/ */
/* */
/* */
/******************************************************************************/
/* */
/* Titre : Favilink - Affichez un favicon à côté de vos adresses */
/* */
/* URL : http://www.phpsources.org/scripts614-PHP.htm */
/* Auteur : PHPLizardo */
/* Date édition : 01 Nov 2010 */
/* Website auteur : http://www.europasecurity.org */
/* */
/******************************************************************************/
/**
* Favilink
*
* Affiche un lien précédé du favicon
* du site internet de destination.
*
* @author PHPLizardo
* @version 1
* @license CC BY-NC-SA
*
* @param string $url url à laquelle vous souhaitez ajouter le favicon.
* @param string $alt favicon alternative dans le cas ou le site internet
concerné n'en possède pas.
*
*/
function favilink ( $url, $text = null, $alt = null)
{
/**
* Si un texte pour le lien est fourni, on utilise ce dernier,
* dans le cas contraire, on affiche l'url donnée.
*/
$text = ( is_empty ( $text ) ) ? $url : $text;
/**
* La valeur du paramètre $url doit impérativement
* être un url valide. On vérifie cette condition.
*/
$url = filter_var ( $url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED
);
if ( $url !== FALSE )
{
/**
* Nous devons extraire le nom de domain de l'url
* passée en paramètre. On découpe l'url en portions.
*/
$parts = parse_url($url);
/**
* Récupération du nom de domaine par recomposition de
* l'url précédemment découpée.
*/
$domain = $parts['scheme'] . '://' . $parts['host'];
/**
* Récupération du favicon. On recherche le favicon dans le répertoire
* racine du site internet car c'est l'endroit le plus répendu. Si, et
* seulement si le fichier n'existe pas, on télécharge la page distante
* et on extrait l'adresse du favicon depuis l'en-tête de la page.
*/
$favicon = $domain . '/favicon.ico';
if ( file_get_contents ( $favicon ) === FALSE )
{
$page = file_get_contents ( $domain );
if ( preg_match (
'#<link rel=\"(shortcut )?icon\"( type="image/png")? href=\"(.+)\" />#', $page,
$match ) )
{
$favicon = $match[3];
}
else
{
/**
* Si il n'y a aucun favicon défini pour ce site internet, dans le cas ou
une
* image alternative est fourni, on affiche cette dernière, sinon on
affiche rien.
*/
if($alt != null)
{
$favicon = $alt;
}
else
{
return '<a href="' . htmlspecialchars ( $url ) . '">' .
htmlspecialchars ( $text ) . '</a>';
}
}
/**
* Si c'est une adresse abosulue, par exemple dans le cas où le favicon
* est situé sur un site internet externe ou un sous-domaine, on récupère
* l'adresse entière. Sinon on combine le nom de domaine et l'adresse
relative
* du favicon pour recréer une adresse valide.
*/
if( filter_var ( $favicon, FILTER_VALIDATE_URL,
FILTER_FLAG_HOST_REQUIRED ) === FALSE )
{
/**
* On retire l'éventuel slash (/) qui se situe au début de l'adresse
* relative pour éviter le double slash.
*/
if ( $favicon{1} == '/' )
{
$favicon = substr ( $favicon, 1 );
}
$favicon = $domain . $favicon;
}
}
return '<img src="' . htmlspecialchars ( $favicon ) .
'" alt="" title=" ' . htmlspecialchars ( $domain ) . ' " /> ' .
'<a href="' . htmlspecialchars ( $url ) . '">' .
htmlspecialchars ( $url ) . '</a>';
}
}
?>
|