<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title><![CDATA[Godefroy de Compreignac]]></title>
	<description><![CDATA[Flux RSS des articles]]></description>
	<pubDate>Wed, 20 Aug 2008 22:08:34 +0200</pubDate>
	<link>http://www.skreo.net</link>
	<language>fr</language>
	<generator>http://www.eklablog.com</generator>
	
	<item>
		<title><![CDATA[Détecter les sites que vos visiteurs utilisent]]></title>
		<link>http://www.skreo.net/article-2904-196583-detecter-les-sites-que-vos-visiteurs-utilisent.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[Je me suis souvenu d&#39;un article tr&egrave;s int&eacute;ressant sur lequel j&#39;&eacute;tais tomb&eacute; il y a un ou deux mois, pr&eacute;sentant une classe javascript permettant de d&eacute;tecter quels r&eacute;seaux sociaux utilisent les visiteurs. En regardant le code de plus...]]></description>
		<content:encoded><![CDATA[<p>Je me suis souvenu d&#39;un <strong><a href="http://azarask.in/blog/post/socialhistoryjs/">article</a></strong>  tr&egrave;s int&eacute;ressant sur lequel j&#39;&eacute;tais tomb&eacute; il y a un ou deux mois, pr&eacute;sentant une classe javascript permettant de d&eacute;tecter quels r&eacute;seaux sociaux utilisent les visiteurs. En regardant le code de plus pr&ecirc;t, je l&#39;ai trouv&eacute; compliqu&eacute; pour pas grand chose, avec l&#39;utilisation d&#39;une iframe et un code pas tr&egrave;s optimis&eacute;.</p><p>Voici donc un code que je viens de pondre, parce que je pense qu&#39;il pourra &ecirc;tre utile, aussi bien pour vous que pour moi <img alt=" " src="http://www.skreo.net/images/emoticons/smile.gif" /> J&#39;utilise ici le framework <strong><a href="http://mootools.net/download">Mootools 1.2</a></strong> , mais je pense que c&#39;est facilement adaptable &agrave; d&#39;autres. Le principe est simple, on utilise une &quot;faille&quot; du <abbr title="Cascading Style Sheet">CSS</abbr> qui consiste &agrave; r&eacute;cup&eacute;rer le style de liens apr&egrave;s avoir appliqu&eacute; un style particulier aux liens visit&eacute;s (&quot;a:visited&quot;).<br /></p><p>Une petite d&eacute;mo pour commencer : <strong><a href="http://data0.murties.com/skreo/perso/checkvisited.html">checkvisited.html</a></strong><br /><br /></p><p>On va donc commencer par faire un peu de <abbr title="Cascading Style Sheet">CSS</abbr> :</p><div class="code">a<span style="color: #6666ff;">.test_visited</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #000000; font-weight: bold;">display</span>: <span style="color: #993333;">block</span>; <span style="color: #66cc66;">&#125;</span><br />
a<span style="color: #6666ff;">.test_visited</span><span style="color: #3333ff;">:visited</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #000000; font-weight: bold;">display</span>: <span style="color: #993333;">none</span>; <span style="color: #66cc66;">&#125;</span><div style="display:none;">[code=css]a.test_visited { display: block; }<br />a.test_visited:visited { display: none; }[/code]</div></div><br /><p>C&#39;est tout pour le <abbr title="Cascading Style Sheet">CSS</abbr> !<br />Maintenant, le Javascript :<br /><abbr title="Cascading Style Sheet"></abbr></p><div class="code"><span style="color: #009900; font-style: italic;">// Implémentation de la fonction checkVisited</span><br />
<span style="color: #009900; font-style: italic;">// pour les chaînes de caractères (String)</span><br />
String.<span style="color: #006600;">implement</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><br />
    checkVisited : <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
        <span style="color: #003366; font-weight: bold;">var</span> e = <span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span>, <span style="color: #66cc66;">&#123;</span><br />
                href: <span style="color: #000066; font-weight: bold;">this</span>,<br />
                <span style="color: #3366CC;">&quot;class&quot;</span> : <span style="color: #3366CC;">&quot;test_visited&quot;</span><br />
            <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
            .<span style="color: #006600;">inject</span><span style="color: #66cc66;">&#40;</span>document.<span style="color: #006600;">body</span><span style="color: #66cc66;">&#41;</span>,<br />
            b = e.<span style="color: #006600;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;display&quot;</span><span style="color: #66cc66;">&#41;</span>==<span style="color: #3366CC;">&quot;none&quot;</span>;<br />
        e.<span style="color: #006600;">destroy</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
        <span style="color: #000066; font-weight: bold;">return</span> b;<br />
    <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #009900; font-style: italic;">// Implémentation de la fonction checkVisited pour</span><br />
<span style="color: #009900; font-style: italic;">// les tableaux (Array) : tester une liste d'urls</span><br />
Array.<span style="color: #006600;">implement</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><br />
    checkVisited : <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
        <span style="color: #003366; font-weight: bold;">var</span> b = <span style="color: #003366; font-weight: bold;">false</span>;<br />
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
            <span style="color: #000066; font-weight: bold;">if</span><span style="color: #66cc66;">&#40;</span>s.<span style="color: #006600;">checkVisited</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
                b = <span style="color: #003366; font-weight: bold;">true</span>;<br />
        <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><br />
        <span style="color: #000066; font-weight: bold;">return</span> b;<br />
    <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<div style="display:none;">[code=javascript]// Impl&eacute;mentation de la fonction checkVisited<br />// pour les cha&icirc;nes de caract&egrave;res (String)<br />String.implement({<br />&nbsp;&nbsp;&nbsp; checkVisited : function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var e = (new Element(&quot;a&quot;, {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; href: this,<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;class&quot; : &quot;test_visited&quot;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }))<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .inject(document.body),<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; b = e.getStyle(&quot;display&quot;)==&quot;none&quot;;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.destroy();<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return b;<br />&nbsp;&nbsp;&nbsp; }<br />});<br /><br />// Impl&eacute;mentation de la fonction checkVisited pour<br />// les tableaux (Array) : tester une liste d&#39;urls<br />Array.implement({<br />&nbsp;&nbsp;&nbsp; checkVisited : function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var b = false;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.each(function(s){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(s.checkVisited())<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; b = true;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; })<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return b;<br />&nbsp;&nbsp;&nbsp; }<br />});[/code]</div></div><p>Ces deux impl&eacute;mentations permettent de v&eacute;rifier une URL ou une liste d&#39;URLs.</p><p>On va reprendre l&#39;exemple des r&eacute;seaux sociaux que traite Aza Raskin dans son article. D&#39;abord, on cr&eacute;e un conteneur pour l&#39;affichage du r&eacute;sultat :<br /></p><div class="code"><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;visited_sites&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><div style="display:none;">[code=html]&lt;div id=&quot;visited_sites&quot;&gt;<br />&lt;/div&gt;[/code]</div></div><p>Ensuite, on cr&eacute;e la liste et on la traite : <br /></p><div class="code"><span style="color: #808080; font-style: italic;">// Liste de réseaux sociaux</span><br />
<span style="color: #000000; font-weight: bold;">var</span> sites = <span style="color: #66cc66;">&#123;</span><br />
    <span style="color: #ff0000;">&quot;Digg&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://digg.com&quot;</span>, <span style="color: #ff0000;">&quot;http://digg.com/login&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Reddit&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://reddit.com&quot;</span>, <span style="color: #ff0000;">&quot;http://reddit.com/new/&quot;</span>, <span style="color: #ff0000;">&quot;http://reddit.com/controversial/&quot;</span>, <span style="color: #ff0000;">&quot;http://reddit.com/top/&quot;</span>, <span style="color: #ff0000;">&quot;http://reddit.com/r/reddit.com/&quot;</span>, <span style="color: #ff0000;">&quot;http://reddit.com/r/programming/&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;StumbleUpon&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://stumbleupon.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Yahoo Buzz&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://buzz.yahoo.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Facebook&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://facebook.com/home.php&quot;</span>, <span style="color: #ff0000;">&quot;http://facebook.com&quot;</span>, <span style="color: #ff0000;">&quot;https://login.facebook.com/login.php&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Del.icio.us&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;https://secure.del.icio.us/login&quot;</span>, <span style="color: #ff0000;">&quot;http://del.icio.us/&quot;</span>, <span style="color: #ff0000;">&quot;http://delicious.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;MySpace&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.myspace.com/&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Technorati&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.technorati.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Newsvine&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;https://www.newsvine.com&quot;</span>, <span style="color: #ff0000;">&quot;https://www.newsvine.com/_tools/user/login&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Songza&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://songza.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Slashdot&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://slashdot.org/&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Ma.gnolia&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://ma.gnolia.com/&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Blinklist&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.blinklist.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Furl&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://furl.net&quot;</span>, <span style="color: #ff0000;">&quot;http://furl.net/members/login&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Mister Wong&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.mister-wong.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Current&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://current.com&quot;</span>, <span style="color: #ff0000;">&quot;http://current.com/login.html&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Menaeme&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://meneame.net&quot;</span>, <span style="color: #ff0000;">&quot;http://meneame.net/login.php&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Oknotizie&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://oknotizie.alice.it&quot;</span>, <span style="color: #ff0000;">&quot;http://oknotizie.alice.it/login.html.php&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Diigo&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.diigo.com/&quot;</span>, <span style="color: #ff0000;">&quot;https://secure.diigo.com/sign-in&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Funp&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://funp.com&quot;</span>, <span style="color: #ff0000;">&quot;http://funp.com/account/loginpage.php&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Blogmarks&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://blogmarks.net&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Yahoo Bookmarks&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://bookmarks.yahoo.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Xanga&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://xanga.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Blogger&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://blogger.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Last.fm&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.last.fm/&quot;</span>, <span style="color: #ff0000;">&quot;https://www.last.fm/login/&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;N4G&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.n4g.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Faves&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://faves.com&quot;</span>, <span style="color: #ff0000;">&quot;http://faves.com/home&quot;</span>, <span style="color: #ff0000;">&quot;https://secure.faves.com/signIn&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Simpy&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.simpy.com&quot;</span>, <span style="color: #ff0000;">&quot;http://www.simpy.com/login&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Yigg&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.yigg.de&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Kirtsy&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.kirtsy.com&quot;</span>, <span style="color: #ff0000;">&quot;http://www.kirtsy.com/login.php&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Fark&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.fark.com&quot;</span>, <span style="color: #ff0000;">&quot;http://cgi.fark.com/cgi/fark/users.pl?self=1&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Mixx&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;https://www.mixx.com/login/dual&quot;</span>, <span style="color: #ff0000;">&quot;http://www.mixx.com&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Google Bookmarks&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://www.google.com/bookmarks&quot;</span>, <span style="color: #ff0000;">&quot;http://www.google.com/ig/add?moduleurl=bookmarks.xml&amp;hl=en&quot;</span><span style="color: #66cc66;">&#93;</span>,<br />
    <span style="color: #ff0000;">&quot;Subbmitt&quot;</span>: <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;http://subbmitt.com/&quot;</span><span style="color: #66cc66;">&#93;</span><br />
<span style="color: #66cc66;">&#125;</span>,<br />
    t = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">// Variable dans laquelle on va stocker la liste de sites visités par l'utilisateur</span><br />
<br />
<span style="color: #808080; font-style: italic;">// On vérifie pour chaque site de la liste</span><br />
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i in sites<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
    <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>sites<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.checkVisited<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
        t.push<span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
<span style="color: #808080; font-style: italic;">// On affiche le résultat</span><br />
$<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;visited_sites&quot;</span><span style="color: #66cc66;">&#41;</span>.set<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;html&quot;</span>, <span style="color: #ff0000;">&quot;&lt;strong&gt;Sites visités : &lt;/strong&gt;&quot;</span> + t.<a href="http://www.php.net/join"><span style="color: #000066;">join</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;, &quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<div style="display:none;">[code=php]// Liste de r&eacute;seaux sociaux<br />var sites = {<br />&nbsp;&nbsp;&nbsp; &quot;Digg&quot;: [&quot;http://digg.com&quot;, &quot;http://digg.com/login&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Reddit&quot;: [&quot;http://reddit.com&quot;, &quot;http://reddit.com/new/&quot;, &quot;http://reddit.com/controversial/&quot;, &quot;http://reddit.com/top/&quot;, &quot;http://reddit.com/r/reddit.com/&quot;, &quot;http://reddit.com/r/programming/&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;StumbleUpon&quot;: [&quot;http://stumbleupon.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Yahoo Buzz&quot;: [&quot;http://buzz.yahoo.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Facebook&quot;: [&quot;http://facebook.com/home.php&quot;, &quot;http://facebook.com&quot;, &quot;https://login.facebook.com/login.php&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Del.icio.us&quot;: [&quot;https://secure.del.icio.us/login&quot;, &quot;http://del.icio.us/&quot;, &quot;http://delicious.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;MySpace&quot;: [&quot;http://www.myspace.com/&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Technorati&quot;: [&quot;http://www.technorati.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Newsvine&quot;: [&quot;https://www.newsvine.com&quot;, &quot;https://www.newsvine.com/_tools/user/login&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Songza&quot;: [&quot;http://songza.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Slashdot&quot;: [&quot;http://slashdot.org/&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Ma.gnolia&quot;: [&quot;http://ma.gnolia.com/&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Blinklist&quot;: [&quot;http://www.blinklist.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Furl&quot;: [&quot;http://furl.net&quot;, &quot;http://furl.net/members/login&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Mister Wong&quot;: [&quot;http://www.mister-wong.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Current&quot;: [&quot;http://current.com&quot;, &quot;http://current.com/login.html&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Menaeme&quot;: [&quot;http://meneame.net&quot;, &quot;http://meneame.net/login.php&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Oknotizie&quot;: [&quot;http://oknotizie.alice.it&quot;, &quot;http://oknotizie.alice.it/login.html.php&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Diigo&quot;: [&quot;http://www.diigo.com/&quot;, &quot;https://secure.diigo.com/sign-in&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Funp&quot;: [&quot;http://funp.com&quot;, &quot;http://funp.com/account/loginpage.php&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Blogmarks&quot;: [&quot;http://blogmarks.net&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Yahoo Bookmarks&quot;: [&quot;http://bookmarks.yahoo.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Xanga&quot;: [&quot;http://xanga.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Blogger&quot;: [&quot;http://blogger.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Last.fm&quot;: [&quot;http://www.last.fm/&quot;, &quot;https://www.last.fm/login/&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;N4G&quot;: [&quot;http://www.n4g.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Faves&quot;: [&quot;http://faves.com&quot;, &quot;http://faves.com/home&quot;, &quot;https://secure.faves.com/signIn&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Simpy&quot;: [&quot;http://www.simpy.com&quot;, &quot;http://www.simpy.com/login&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Yigg&quot;: [&quot;http://www.yigg.de&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Kirtsy&quot;: [&quot;http://www.kirtsy.com&quot;, &quot;http://www.kirtsy.com/login.php&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Fark&quot;: [&quot;http://www.fark.com&quot;, &quot;http://cgi.fark.com/cgi/fark/users.pl?self=1&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Mixx&quot;: [&quot;https://www.mixx.com/login/dual&quot;, &quot;http://www.mixx.com&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Google Bookmarks&quot;: [&quot;http://www.google.com/bookmarks&quot;, &quot;http://www.google.com/ig/add?moduleurl=bookmarks.xml&amp;hl=en&quot;],<br />&nbsp;&nbsp;&nbsp; &quot;Subbmitt&quot;: [&quot;http://subbmitt.com/&quot;]<br />},<br />&nbsp;&nbsp;&nbsp; t = []; // Variable dans laquelle on va stocker la liste de sites visit&eacute;s par l&#39;utilisateur<br /><br />// On v&eacute;rifie pour chaque site de la liste<br />for(var i in sites){<br />&nbsp;&nbsp;&nbsp; if(sites[i].checkVisited())<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t.push(i);<br />}<br /><br />// On affiche le r&eacute;sultat<br />$(&quot;visited_sites&quot;).set(&quot;html&quot;, &quot;&lt;strong&gt;Sites visit&eacute;s : &lt;/strong&gt;&quot; + t.join(&quot;, &quot;));[/code]</div></div><p>C&#39;est fini !</p><p>Chez moi, &ccedil;a fonctionne impeccablement avec Firefox 3, Op&eacute;ra 9.5, IE 6, et IE 7.<br />Si vous avez un probl&egrave;me d&#39;incompatibilit&eacute; ou une suggestion, n&#39;h&eacute;sitez pas ! Par exemple, on pourrait, comme Aza, traiter pour une URL quelconque l&#39;URL avec et sans les &quot;www&quot;.</p><p>Merci de me faire un petit lien de retour si vous utilisez ce script quelque part <img alt=" " src="http://www.skreo.net/images/emoticons/wink2.gif" /></p>]]></content:encoded>
		<pubDate>Fri, 01 Aug 2008 02:34:31 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2904-196583-detecter-les-sites-que-vos-visiteurs-utilisent.html</guid>
	</item>
	<item>
		<title><![CDATA[[PHP] Enlever tous les accents d'une chaîne]]></title>
		<link>http://www.skreo.net/article-2904-192614-php-enlever-tous-les-accents-d-une-chaine.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[Voici ma fonction pour enlever tous les accents d&#39;une cha&icirc;ne de caract&egrave;res tout en respectant l&#39;encodage (cette fonction traite tr&egrave;s bien les textes UTF-8 par exemple) : function removeAccents &#40; $txt &#41; &#123; 
    $txt = str_replace &#40; 'œ' , 'oe' ,...]]></description>
		<content:encoded><![CDATA[<p>Voici ma fonction pour enlever tous les accents d&#39;une cha&icirc;ne de caract&egrave;res tout en respectant l&#39;encodage (cette fonction traite tr&egrave;s bien les textes UTF-8 par exemple) :</p><div class="code"><span style="color: #000000; font-weight: bold;">function</span> removeAccents<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'œ'</span>, <span style="color: #ff0000;">'oe'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Œ'</span>, <span style="color: #ff0000;">'Oe'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'æ'</span>, <span style="color: #ff0000;">'ae'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Æ'</span>, <span style="color: #ff0000;">'Ae'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <a href="http://www.php.net/mb_regex_encoding"><span style="color: #000066;">mb_regex_encoding</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'UTF-8'</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÀÁÂÃÄÅĀĂǍẠẢẤẦẨẪẬẮẰẲẴẶǺĄ]'</span>, <span style="color: #ff0000;">'A'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[àáâãäåāăǎạảấầẩẫậắằẳẵặǻą]'</span>, <span style="color: #ff0000;">'a'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÇĆĈĊČ]'</span>, <span style="color: #ff0000;">'C'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[çćĉċč]'</span>, <span style="color: #ff0000;">'c'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÐĎĐ]'</span>, <span style="color: #ff0000;">'D'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ďđ]'</span>, <span style="color: #ff0000;">'d'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÈÉÊËĒĔĖĘĚẸẺẼẾỀỂỄỆ]'</span>, <span style="color: #ff0000;">'E'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[èéêëēĕėęěẹẻẽếềểễệ]'</span>, <span style="color: #ff0000;">'e'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ĜĞĠĢ]'</span>, <span style="color: #ff0000;">'G'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ĝğġģ]'</span>, <span style="color: #ff0000;">'g'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ĤĦ]'</span>, <span style="color: #ff0000;">'H'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ĥħ]'</span>, <span style="color: #ff0000;">'h'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÌÍÎÏĨĪĬĮİǏỈỊ]'</span>, <span style="color: #ff0000;">'I'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ìíîïĩīĭįıǐỉị]'</span>, <span style="color: #ff0000;">'i'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ĵ'</span>, <span style="color: #ff0000;">'J'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ĵ'</span>, <span style="color: #ff0000;">'j'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Ķ'</span>, <span style="color: #ff0000;">'K'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ķ'</span>, <span style="color: #ff0000;">'k'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ĹĻĽĿŁ]'</span>, <span style="color: #ff0000;">'L'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ĺļľŀł]'</span>, <span style="color: #ff0000;">'l'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÑŃŅŇ]'</span>, <span style="color: #ff0000;">'N'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ñńņňŉ]'</span>, <span style="color: #ff0000;">'n'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÒÓÔÕÖØŌŎŐƠǑǾỌỎỐỒỔỖỘỚỜỞỠỢ]'</span>, <span style="color: #ff0000;">'O'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[òóôõöøōŏőơǒǿọỏốồổỗộớờởỡợð]'</span>, <span style="color: #ff0000;">'o'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŔŖŘ]'</span>, <span style="color: #ff0000;">'R'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŕŗř]'</span>, <span style="color: #ff0000;">'r'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŚŜŞŠ]'</span>, <span style="color: #ff0000;">'S'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[śŝşš]'</span>, <span style="color: #ff0000;">'s'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŢŤŦ]'</span>, <span style="color: #ff0000;">'T'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ţťŧ]'</span>, <span style="color: #ff0000;">'t'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÙÚÛÜŨŪŬŮŰŲƯǓǕǗǙǛỤỦỨỪỬỮỰ]'</span>, <span style="color: #ff0000;">'U'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ùúûüũūŭůűųưǔǖǘǚǜụủứừửữự]'</span>, <span style="color: #ff0000;">'u'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŴẀẂẄ]'</span>, <span style="color: #ff0000;">'W'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŵẁẃẅ]'</span>, <span style="color: #ff0000;">'w'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ÝŶŸỲỸỶỴ]'</span>, <span style="color: #ff0000;">'Y'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ýÿŷỹỵỷỳ]'</span>, <span style="color: #ff0000;">'y'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[ŹŻŽ]'</span>, <span style="color: #ff0000;">'Z'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$txt</span> = <a href="http://www.php.net/mb_ereg_replace"><span style="color: #000066;">mb_ereg_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'[źżž]'</span>, <span style="color: #ff0000;">'z'</span>, <span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$txt</span>;<br />
<span style="color: #66cc66;">&#125;</span><div style="display:none;">[code=php]function removeAccents($txt){<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;&oelig;&#39;, &#39;oe&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;&OElig;&#39;, &#39;Oe&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;&aelig;&#39;, &#39;ae&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;&AElig;&#39;, &#39;Ae&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; mb_regex_encoding(&#39;UTF-8&#39;);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Agrave;&Aacute;&Acirc;&Atilde;&Auml;&Aring;ĀĂǍẠẢẤẦẨẪẬẮẰẲẴẶǺĄ]&#39;, &#39;A&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&agrave;&aacute;&acirc;&atilde;&auml;&aring;āăǎạảấầẩẫậắằẳẵặǻą]&#39;, &#39;a&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Ccedil;ĆĈĊČ]&#39;, &#39;C&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&ccedil;ćĉċč]&#39;, &#39;c&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&ETH;ĎĐ]&#39;, &#39;D&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ďđ]&#39;, &#39;d&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Egrave;&Eacute;&Ecirc;&Euml;ĒĔĖĘĚẸẺẼẾỀỂỄỆ]&#39;, &#39;E&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&egrave;&eacute;&ecirc;&euml;ēĕėęěẹẻẽếềểễệ]&#39;, &#39;e&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ĜĞĠĢ]&#39;, &#39;G&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ĝğġģ]&#39;, &#39;g&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ĤĦ]&#39;, &#39;H&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ĥħ]&#39;, &#39;h&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Igrave;&Iacute;&Icirc;&Iuml;ĨĪĬĮİǏỈỊ]&#39;, &#39;I&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&igrave;&iacute;&icirc;&iuml;ĩīĭįıǐỉị]&#39;, &#39;i&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;Ĵ&#39;, &#39;J&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;ĵ&#39;, &#39;j&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;Ķ&#39;, &#39;K&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = str_replace(&#39;ķ&#39;, &#39;k&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ĹĻĽĿŁ]&#39;, &#39;L&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ĺļľŀł]&#39;, &#39;l&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Ntilde;ŃŅŇ]&#39;, &#39;N&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&ntilde;ńņňŉ]&#39;, &#39;n&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Ograve;&Oacute;&Ocirc;&Otilde;&Ouml;&Oslash;ŌŎŐƠǑǾỌỎỐỒỔỖỘỚỜỞỠỢ]&#39;, &#39;O&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&ograve;&oacute;&ocirc;&otilde;&ouml;&oslash;ōŏőơǒǿọỏốồổỗộớờởỡợ&eth;]&#39;, &#39;o&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŔŖŘ]&#39;, &#39;R&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŕŗř]&#39;, &#39;r&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŚŜŞ&Scaron;]&#39;, &#39;S&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[śŝş&scaron;]&#39;, &#39;s&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŢŤŦ]&#39;, &#39;T&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ţťŧ]&#39;, &#39;t&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Ugrave;&Uacute;&Ucirc;&Uuml;ŨŪŬŮŰŲƯǓǕǗǙǛỤỦỨỪỬỮỰ]&#39;, &#39;U&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&ugrave;&uacute;&ucirc;&uuml;ũūŭůűųưǔǖǘǚǜụủứừửữự]&#39;, &#39;u&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŴẀẂẄ]&#39;, &#39;W&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŵẁẃẅ]&#39;, &#39;w&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&Yacute;Ŷ&Yuml;ỲỸỶỴ]&#39;, &#39;Y&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[&yacute;&yuml;ŷỹỵỷỳ]&#39;, &#39;y&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[ŹŻŽ]&#39;, &#39;Z&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; $txt = mb_ereg_replace(&#39;[źżž]&#39;, &#39;z&#39;, $txt);<br />&nbsp;&nbsp;&nbsp; return $txt;<br />}[/code]</div></div><p>On peut faire plus simple, certes, mais contrairement &agrave; ce qu&#39;on peut voir habituellement, cette fonction traite v&eacute;ritablement tous les accents existants, et fonctionne avec tous les encodages.<br /></p>]]></content:encoded>
		<pubDate>Fri, 25 Jul 2008 20:46:01 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2904-192614-php-enlever-tous-les-accents-d-une-chaine.html</guid>
	</item>
	<item>
		<title><![CDATA[Retrouvez d'un clic toutes les versions d'une page Web]]></title>
		<link>http://www.skreo.net/article-2906-188849-retrouvez-d-un-clic-toutes-les-versions-d-une-page-web.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[En voulant retrouver l&#39;ancienne version d&#39;une page web tout &agrave; l&#39;heure, j&#39;ai utilis&eacute; Archive.org et j&#39;ai eu l&#39;id&eacute;e d&#39;en faire un petit bookmarklet. C&#39;est bien pratique par exemple si vous ne retrouvez plus une information sur une page qui a...]]></description>
		<content:encoded><![CDATA[<p>En voulant retrouver l&#39;ancienne version d&#39;une page web tout &agrave; l&#39;heure, j&#39;ai utilis&eacute; <a href="http://www.archive.org">Archive.org</a> et j&#39;ai eu l&#39;id&eacute;e d&#39;en faire un petit bookmarklet. C&#39;est bien pratique par exemple si vous ne retrouvez plus une information sur une page qui a chang&eacute;, ou que cette page a &eacute;t&eacute; supprim&eacute;e.</p><p>Pour ajouter le bookmarklet &agrave; votre navigateur, glissez-d&eacute;posez ce lien dans vos favoris :</p><a href="javascript:void(location.href=&#39;http://web.archive.org/web/*/&#39;+escape(location.href))" style="border: 1px solid #bbbbff; font-weight: bold; display: block; width: 70px; text-align: center">Archives</a><p>Ensuite, pour afficher les diff&eacute;rentes versions d&#39;une page web, il vous suffira de cliquer sur &quot;Archives&quot; dans vos favoris <img alt=" " src="http://www.skreo.net/images/emoticons/wink2.gif" /></p>]]></content:encoded>
		<pubDate>Sun, 20 Jul 2008 21:12:12 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2906-188849-retrouvez-d-un-clic-toutes-les-versions-d-une-page-web.html</guid>
	</item>
	<item>
		<title><![CDATA[Tagzeo : Réservez votre tag !]]></title>
		<link>http://www.skreo.net/article-2906-187793-tagzeo-reservez-votre-tag.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[Un petit moyen de plus pour augmenter le r&eacute;f&eacute;rencement de votre site ou de votre blog, et de recueillir des visiteurs &eacute;gar&eacute;s : je vous pr&eacute;sente Tagzeo , que l&#39;ami Rob vient de mettre en ligne. Une inscription rapide &agrave; ce service vous permettra de...]]></description>
		<content:encoded><![CDATA[<a href="http://data0.murties.com/skreo/mod_article187793.jpg"><img src="http://data0.murties.com/skreo/mod_article187793.jpg" width="200" alt="Tagzeo : R&eacute;servez votre tag !" style="float: left; padding-right: 5px;" /></a><p>Un petit moyen de plus pour augmenter le r&eacute;f&eacute;rencement de votre site ou de votre blog, et de recueillir des visiteurs &eacute;gar&eacute;s : je vous pr&eacute;sente <a href="http://www.tagzeo.com/Blog">Tagzeo</a>, que l&#39;ami Rob vient de mettre en ligne.</p><p>Une inscription rapide &agrave; ce service vous permettra de r&eacute;server un mot cl&eacute; sur la page d&#39;accueil de Tagzeo, avec un lien vers votre site. Cela peut devenir int&eacute;ressant pour le r&eacute;f&eacute;rencement de votre site si Tagzeo vient &agrave; &ecirc;tre connu. Surtout que les bons mots cl&eacute; ne sont pas encore r&eacute;serv&eacute;s, alors d&eacute;p&eacute;chez-vous <img alt=" " src="http://www.skreo.net/images/emoticons/wink2.gif" /></p><p>Un syst&egrave;me de points vous permettra de mettre en avant votre mot cl&eacute; en lui rajoutant de la couleur, en le mettant en gras ou en lui augmentant sa taille. Evidemment, les points sont payant. Un reproche toutefois : ces modifications ne tiennent pas compte de la s&eacute;mantique, et ne seront donc pas per&ccedil;ues par les moteurs de recherche (tout est en <abbr title="Cascading Style Sheet">CSS</abbr>).<br /></p>]]></content:encoded>
		<pubDate>Sat, 19 Jul 2008 14:57:28 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2906-187793-tagzeo-reservez-votre-tag.html</guid>
	</item>
	<item>
		<title><![CDATA[Foxmarks : Synchronisez vos marque-pages Firefox]]></title>
		<link>http://www.skreo.net/article-2906-184353-foxmarks-synchronisez-vos-marque-pages-firefox.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[Pourquoi utiliser des services comme del.icio.us alors Firefox 3 g&egrave;re tr&egrave;s bien les marque-pages, surtout avec la &quot;barre g&eacute;niale&quot; ? Peut-&ecirc;tre pour l&#39;aspect &quot;social&quot; me-direz vous, je m&#39;en fiche, passons. Ce que je voulais, c&#39;est utiliser...]]></description>
		<content:encoded><![CDATA[<a href="http://data0.murties.com/skreo/mod_article184353.jpg"><img src="http://data0.murties.com/skreo/mod_article184353.jpg" width="200" alt="Foxmarks : Synchronisez vos marque-pages Firefox" style="float: left; padding-right: 5px;" /></a><p>Pourquoi utiliser des services comme del.icio.us alors Firefox 3 g&egrave;re tr&egrave;s bien les marque-pages, surtout avec la &quot;barre g&eacute;niale&quot; ? Peut-&ecirc;tre pour l&#39;aspect &quot;social&quot; me-direz vous, je m&#39;en fiche, passons.</p><p>Ce que je voulais, c&#39;est utiliser simplement mes marque-pages avec Firefox, mais qu&#39;ils restent les m&ecirc;mes sur les diff&eacute;rents PC que j&#39;utilise, et que je puisse y acc&eacute;der de n&#39;importe o&ugrave;. C&#39;est l&agrave; que <a href="http://www.foxmarks.com/">Foxmarks</a>  intervient : il suffit de s&#39;inscrire sur leur site, et de t&eacute;l&eacute;charger l&#39;extension.</p><p>L&#39;extension est discr&egrave;te et configurable, elle synchronise automatiquement les marque-pages avec le site my.foxmarks.com, ce qui permet de toujours les avoir sous la main. De plus, l&#39;interface du site est tr&egrave;s bien faite, en Ajax et companie :-)</p><p><a href="http://data0.murties.com/skreo/perso/images/foxmarks.jpg"><img alt="Foxmarks" height="375" src="http://data0.murties.com/skreo/perso/images/foxmarks_thumb.jpg" width="500" /></a> </p>]]></content:encoded>
		<pubDate>Tue, 15 Jul 2008 01:33:49 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2906-184353-foxmarks-synchronisez-vos-marque-pages-firefox.html</guid>
	</item>
	<item>
		<title><![CDATA[Passer proprement de Firefox 2 à Firefox 3]]></title>
		<link>http://www.skreo.net/article-2906-182583-passer-proprement-de-firefox-2-a-firefox-3.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[En passant de Firefox 2 &agrave; Firefox 3 , j&#39;avais eu beaucoup d&#39;emmerdes, par exemple : police de caract&egrave;res trop petite, crashs incessants , plus de restauration des crashs. Du coup, j&#39;&eacute;tais tout de suite repass&eacute; sur la v2. Sauf que j&#39;avais aussi beaucoup...]]></description>
		<content:encoded><![CDATA[<a href="http://data0.murties.com/skreo/mod_article182583.png"><img src="http://data0.murties.com/skreo/mod_article182583.png" width="150" alt="Passer proprement de Firefox 2 &agrave; Firefox 3" style="float: left; padding-right: 5px;" /></a><p>En passant de Firefox 2 &agrave; <strong>Firefox 3</strong>, j&#39;avais eu beaucoup d&#39;emmerdes, par exemple : police de caract&egrave;res trop petite, <strong>crashs incessants</strong>, plus de restauration des crashs. Du coup, j&#39;&eacute;tais tout de suite repass&eacute; sur la v2. Sauf que j&#39;avais aussi beaucoup de crashs avec la v2, et je me suis dit que ce devait &ecirc;tre parce que je me trimbalais le m&ecirc;me dossier de config depuis des ann&eacute;es (il est pass&eacute; par Windows, Kubuntu, Ubuntu...). Et en effet, c&#39;&eacute;tait &agrave; cause de &ccedil;a !</p><p>Je vais donc expliquer rapidement comment passer <strong>proprement</strong> &agrave; Firefox 3 en conservant ses <strong>mots de passe</strong> et <strong>bookmarks</strong>.<br />Avant de d&eacute;sinstaller Firefox 2 et d&#39;installer Firefox 3 :<br /></p><ul><li>Cr&eacute;ez un nouveau dossier quelque part, qu&#39;on va nommer ici <em>backup</em>.<br /><br /></li><li>Rendez-vous dans le <strong>dossier de configuration</strong> de Firefox :<br />Sous Linux :<em> /home/user/.mozilla/firefox</em> (remplacez <em>user</em> par votre nom d&#39;utilisateur... on sait jamais...)<br />Sous Windows :<em> C:\Documents and Settings\all users\Application Data\Mozilla\Firefox\Profiles</em> (je suis trop gentil...)<br /><br /></li><li>Dans ce dossier, vous trouverez un dossier avec un nom bizarre, qui est celui de votre Profil. Entrez dedans, puis <strong>copiez les fichiers</strong> <em>bookmarks.html</em>, <em>key3.db</em>, <em>signons2.txt</em>, et <em>signons3.txt</em> (s&#39;il existe) dans votre dossier <span style="font-style: italic">backup</span>.<br /><br /></li><li><strong>D&eacute;sinstallez compl&egrave;tement Firefox 2</strong>. Pour cela :<br />Passez par votre gestionnaire de paquets favori (ou apt-get si vous &ecirc;tes quelqu&#39;un de bien) si vous &ecirc;tes sous Linux, ou par le panneau de configuration de Windows.<br />Puis supprimez le dossier de configuration.<br /><br /></li><li><strong>Installez Firefox 3</strong><br /><br /></li><li><strong>R&eacute;cup&eacute;rez les bookmarks :</strong><br />Dans Firefox 3, rendez-vous dans le menu &quot;Bookmarks&quot; =&gt; &quot;Organize Bookmarks&quot;. Puis cliquez sur &quot;Import and Backup&quot; =&gt; &quot;Import HTML&quot;. Et l&agrave;, s&eacute;lectionnez le fichier <span style="font-style: italic">bookmarks.html</span> dans votre dossier <span style="font-style: italic">backup</span>.<br />Les booksmarks de la barre personnelle ne se mettront pas automatiquement au bon endroit, il suffit de les d&eacute;placer.<br /><br /></li><li><strong>R&eacute;cup&eacute;rez les mots de passe :</strong><br />Fermez Firefox 3. Supprimez les fichiers  <em>key3.db</em>, <em>signons2.txt</em>, et <em>signons3.txt</em>du dossier de configuration, puis placez ceux de votre dossier <span style="font-style: italic">backup</span> &agrave; la place.</li></ul><p>Vous pouvez ensuite red&eacute;marrer Firefox 3, avec vos bookmarks et vos mots de passe !<br />Cette configuration sera propre, et risquera donc moins de faire des impr&eacute;vus.</p><p>Pour les <span style="font-weight: bold">plugins</span>, je conseille de simplement les r&eacute;installer, car de toute fa&ccedil;on, ils ont presque tous une nouvelle version, et certains ne sont pas encore compatibles.<br />Les plugins sont ici : <a href="https://addons.mozilla.org/fr/firefox/">https://addons.mozilla.org/fr/firefox/</a> <br /></p>]]></content:encoded>
		<pubDate>Sun, 13 Jul 2008 00:40:14 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2906-182583-passer-proprement-de-firefox-2-a-firefox-3.html</guid>
	</item>
	<item>
		<title><![CDATA[Mes conventions en programmation]]></title>
		<link>http://www.skreo.net/article-2904-181807-mes-conventions-en-programmation.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[On a tous nos petites habitudes de programmation : quel type d&#39;indentation, o&ugrave; placer les accolades, notation hongroise, espacements...etc.
Je vais vous pr&eacute;senter les miennes, non pas pour tenter de les imposer (d&#39;ailleurs tout n&#39;est pas forc&eacute;ment bien), mais...]]></description>
		<content:encoded><![CDATA[<p>On a tous nos petites<strong> habitudes de programmation</strong> : quel type d&#39;indentation, o&ugrave; placer les accolades, notation hongroise, espacements...etc.<br />Je vais vous pr&eacute;senter les miennes, non pas pour tenter de les imposer (d&#39;ailleurs tout n&#39;est pas forc&eacute;ment bien), mais pour &eacute;changer, savoir ce que vous en pensez, et savoir quelles sont les v&ocirc;tres. Je ne parlerai ici que de l&#39;<strong>aspect visuel</strong> de la programmation, pas de la structure des fichiers, des frameworks...<br /></p><p>Avant tout, un petit exemple en PHP pour illustrer mes conventions :<br /><div class="code"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #0000ff;">$monTableau</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'H'</span>, <span style="color: #ff0000;">'e'</span>, <span style="color: #ff0000;">'l'</span>, <span style="color: #ff0000;">'l'</span>, <span style="color: #ff0000;">'o'</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #0000ff;">$txt</span> = <span style="color: #ff0000;">''</span>;<br />
<span style="color: #0000ff;">$n</span> = <span style="color: #cc66cc;">2</span>;<br />
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$i</span>=<span style="color: #cc66cc;">0</span>; <span style="color: #0000ff;">$i</span>&lt;count<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$monTableau</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #0000ff;">$i</span>++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
    <span style="color: #0000ff;">$txt</span> .= <span style="color: #0000ff;">$monTableau</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$i</span><span style="color: #66cc66;">&#93;</span>;<br />
    <span style="color: #0000ff;">$n</span> = <a href="http://www.php.net/pow"><span style="color: #000066;">pow</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$n</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$n</span> % <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/strlen"><span style="color: #000066;">strlen</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$txt</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">+1</span><span style="color: #66cc66;">&#41;</span>==<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><br />
    <span style="color: #0000ff;">$txt</span> .= <span style="color: #ff0000;">' World'</span>;<br />
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$txt</span>;<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><div style="display:none;">[code=php]&lt;?php<br />$monTableau = array(&#39;H&#39;, &#39;e&#39;, &#39;l&#39;, &#39;l&#39;, &#39;o&#39;);<br />$txt = &#39;&#39;;<br />$n = 2;<br />for($i=0; $i&lt;count($monTableau); $i++){<br />&nbsp;&nbsp;&nbsp; $txt .= $monTableau[$i];<br />&nbsp;&nbsp;&nbsp; $n = pow($n, 2);<br />}<br />if($n % (strlen($txt)+1)==0)<br />&nbsp;&nbsp;&nbsp; $txt .= &#39; World&#39;;<br />echo $txt;<br />?&gt;[/code]</div></div><br /></p><p><span style="font-weight: bold">Notation :<br /></span>J&#39;utilise la notation <a href="http://fr.wikipedia.org/wiki/LowerCamelCase">lowerCamelCase</a>  pour nommer mes variables, fonctions, classes, et m&eacute;thodes.<br /></p><p><span style="font-weight: bold">Indentation :</span><br />Tabulation de la largeur de 4 espace.<br />Je prends soin de bien indenter tout les blocs. Logique diront certains, mais ce n&#39;est pas le cas partout...</p><p><span style="font-weight: bold">Accolades :</span><br />Accolade ouvrante &agrave; la fin de la ligne de d&eacute;finition de la boucle. Accolade fermante sur une nouvelle ligne, au m&ecirc;me niveau que la d&eacute;finition de la boucle.<br />Pas d&#39;accolades pour un bloc mono-ligne. (par exemple un <em>if</em> suivi d&#39;une seule instruction).<br /></p><p><span style="font-weight: bold">Espaces :</span><br />Pour les virgules et les point-virgules : pas d&#39;espace avant, un espace apr&egrave;s.<br />Pas d&#39;espace entre les noms de fonction et la parenth&egrave;se ouvrante. Idem pour les boucles.<br />Pas d&#39;espace entre la parenth&egrave;se fermante et l&#39;accolade ouvrante dans les boucles.<br />Pas d&#39;espace entre le <span style="font-style: italic">else</span> et le <span style="font-style: italic">if</span> dans les <span style="font-style: italic">else if</span>.<br />Un espace de part et d&#39;autre des op&eacute;rateurs de modification (=, +=, *=, ...).<br />Pas d&#39;espace pour les op&eacute;rateurs de comparaison (==, &lt;=, &gt;=) et pour les op&eacute;rateurs de modification dans les boucles (for, while, if), sauf pour les longues expressions.<br /></p><p><span style="font-weight: bold">Guillemets</span><br />En php, j&#39;utilise uniquement les guillemets simples (apostrophe), sauf pour afficher des caract&egrave;res sp&eacute;ciaux (\r, \n ...).<br />Dans les autres langages, des guillemets doubles.<br /></p><p><span style="font-weight: bold">Commentaires</span><br />En moyenne un commentaire mono-ligne toutes les 10 lignes, avant un bloc, pour expliquer ce qu&#39;on fait. Je pense qu&#39;ils sont important pour la compr&eacute;hension g&eacute;n&eacute;rale du code, mais qu&#39;il ne faut pas en abuser.<br />Pas de bloc de 30 lignes au d&eacute;but des pages, au pire 2 ou 3 lignes.<br /></p><p>&nbsp;</p><p>Allez j&#39;ai envie de faire mon chieur, je cr&eacute;e une cha&icirc;ne ! Je tague <a href="http://www.divarvel.fr/">divarvel</a>, <a href="http://blog.darklg.fr/">Darklg</a>, <a href="http://www.travailleursduweb.com/">Babozor</a>, et <a href="http://blog.tomclarks.net/">TomClarks</a> qui seront <span style="text-decoration: line-through">oblig&eacute;s</span> convi&eacute;s &agrave; d&eacute;crire &agrave; leur tour leurs conventions sur leur blog et faire suivre la cha&icirc;ne <img alt=" " src="http://www.skreo.net/images/emoticons/mdr.gif" /><br /></p>]]></content:encoded>
		<pubDate>Fri, 11 Jul 2008 19:40:41 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2904-181807-mes-conventions-en-programmation.html</guid>
	</item>
	<item>
		<title><![CDATA[Ma nouvelle déco...]]></title>
		<link>http://www.skreo.net/article-2901-181056-ma-nouvelle-deco.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[... avec des vieilles disquettes 5&quot;&frac12;]]></description>
		<content:encoded><![CDATA[<a href="http://data0.murties.com/skreo/mod_article181056.jpg"><img src="http://data0.murties.com/skreo/mod_article181056.jpg" width="100%" alt="Ma nouvelle d&eacute;co..." /><br /></a>... avec des vieilles disquettes 5&quot;&frac12;<br />]]></content:encoded>
		<pubDate>Thu, 10 Jul 2008 22:59:35 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2901-181056-ma-nouvelle-deco.html</guid>
	</item>
	<item>
		<title><![CDATA[Internationalisation d'un site web]]></title>
		<link>http://www.skreo.net/article-2904-179180-internationalisation-d-un-site-web.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[Je me suis demand&eacute; il y a quelques temps quelle serait la meilleure solution pour traduire facilement un site web en plusieurs langues, tout en gardant une facilit&eacute; de mise &agrave; jour, une accessibilit&eacute; optimale, et des urls correctes pour le r&eacute;f&eacute;rencement....]]></description>
		<content:encoded><![CDATA[<p>Je me suis demand&eacute; il y a quelques temps quelle serait la <strong>meilleure solution pour traduire</strong> facilement un site web en plusieurs langues, tout en gardant une facilit&eacute; de mise &agrave; jour, une accessibilit&eacute; optimale, et des urls correctes pour le r&eacute;f&eacute;rencement. Le sujet a certes beaucoup &eacute;t&eacute; trait&eacute;, mais j&#39;ai trouv&eacute; tr&egrave;s peu de solutions pratiques, jolies et <strong>performantes</strong> sur le web.<br /></p><p>Certains webmasters recopient simplement l&#39;int&eacute;gralit&eacute; de leur site dans un autre dossier ou sur un autre domaine, puis le traduisent. Oublions tout de suite cette solution... Il faut donc opter pour une solution dynamique, que je traiterai ici en php.<br /><br /></p><h4>URL et d&eacute;tection de la langue</h4><p>Avant de traduire le site, il faut &ecirc;tre capable de <strong>d&eacute;tecter la langue</strong> du visiteur, de lui proposer de changer de langue, et de m&eacute;moriser son choix :</p><p><div class="code"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<a href="http://www.php.net/session_start"><span style="color: #000066;">session_start</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Démarrage de la session pour la sauvegarde du choix de la langue</span><br />
<span style="color: #0000ff;">$langs</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'en'</span>, <span style="color: #ff0000;">'fr'</span>, <span style="color: #ff0000;">'it'</span><span style="color: #66cc66;">&#41;</span>;  <span style="color: #808080; font-style: italic;">// Liste des langues</span><br />
<br />
<span style="color: #808080; font-style: italic;">// Si la langue a été changée par get ou cookie, on enregistre la modif</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$langs</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>!<a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>!=<span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
    <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>;<br />
<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_COOKIE</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_COOKIE</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0000ff;">$langs</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>!<a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>!=<span style="color: #0000ff;">$_COOKIE</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
    <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #0000ff;">$_COOKIE</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>;<br />
<br />
<span style="color: #808080; font-style: italic;">// Si aucune langue n'est définie, on prend celle du navigateur du visiteur</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>!<a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
    <span style="color: #0000ff;">$lang</span> = <a href="http://www.php.net/strtolower"><span style="color: #000066;">strtolower</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/substr"><span style="color: #000066;">substr</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'HTTP_ACCEPT_LANGUAGE'</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
    <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span> = <a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$lang</span>, <span style="color: #0000ff;">$langs</span><span style="color: #66cc66;">&#41;</span> ? <span style="color: #0000ff;">$lang</span> : <span style="color: #0000ff;">$langs</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
<span style="color: #808080; font-style: italic;">// Si le cookie de la langue n'est pas défini ou est différent de la var de session, on le définit</span><br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>!<a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_COOKIE</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>!=<span style="color: #0000ff;">$_COOKIE</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><br />
    <a href="http://www.php.net/setcookie"><span style="color: #000066;">setcookie</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'lang'</span>, <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>, <a href="http://www.php.net/time"><span style="color: #000066;">time</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">+60</span>*<span style="color: #cc66cc;">24</span>*<span style="color: #cc66cc;">3600</span>, <span style="color: #ff0000;">'/'</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #808080; font-style: italic;">// Variable $lang locale que nous utiliserons plus loin</span><br />
<span style="color: #0000ff;">$lang</span> = <span style="color: #0000ff;">$_SESSION</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'lang'</span><span style="color: #66cc66;">&#93;</span>;<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><div style="display:none;">[code=php]&lt;?php<br />session_start(); // D&eacute;marrage de la session pour la sauvegarde du choix de la langue<br />$langs = array(&#39;en&#39;, &#39;fr&#39;, &#39;it&#39;);&nbsp; // Liste des langues<br /><br />// Si la langue a &eacute;t&eacute; chang&eacute;e par get ou cookie, on enregistre la modif<br />if(isset($_GET[&#39;lang&#39;]) &amp;&amp; in_array($_GET[&#39;lang&#39;], $langs) &amp;&amp; (!isset($_SESSION[&#39;lang&#39;]) || $_SESSION[&#39;lang&#39;]!=$_GET[&#39;lang&#39;]))<br />&nbsp;&nbsp;&nbsp; $_SESSION[&#39;lang&#39;] = $_GET[&#39;lang&#39;];<br />else if(isset($_COOKIE[&#39;lang&#39;]) &amp;&amp; in_array($_COOKIE[&#39;lang&#39;], $langs) &amp;&amp; (!isset($_SESSION[&#39;lang&#39;]) || $_SESSION[&#39;lang&#39;]!=$_COOKIE[&#39;lang&#39;]))<br />&nbsp;&nbsp;&nbsp; $_SESSION[&#39;lang&#39;] = $_COOKIE[&#39;lang&#39;];<br /><br />// Si aucune langue n&#39;est d&eacute;finie, on prend celle du navigateur du visiteur<br />if(!isset($_SESSION[&#39;lang&#39;])){<br />&nbsp;&nbsp;&nbsp; $lang = strtolower(substr($_SERVER[&#39;HTTP_ACCEPT_LANGUAGE&#39;], 0, 2));<br />&nbsp;&nbsp;&nbsp; $_SESSION[&#39;lang&#39;] = in_array($lang, $langs) ? $lang : $langs[0];<br />}<br /><br />// Si le cookie de la langue n&#39;est pas d&eacute;fini ou est diff&eacute;rent de la var de session, on le d&eacute;finit<br />if(!isset($_COOKIE[&#39;lang&#39;]) || $_SESSION[&#39;lang&#39;]!=$_COOKIE[&#39;lang&#39;])<br />&nbsp;&nbsp;&nbsp; setcookie(&#39;lang&#39;, $_SESSION[&#39;lang&#39;], time()+60*24*3600, &#39;/&#39;);<br /><br />// Variable $lang locale que nous utiliserons plus loin<br />$lang = $_SESSION[&#39;lang&#39;];<br />?&gt;[/code]</div></div></p><p>Ce code devra &ecirc;tre appel&eacute; au tout d&eacute;but de chaque page du site. Nous avons maintenant notre moyen de d&eacute;tection et de m&eacute;morisation de la langue.<br /><br /></p><p>Ensuite, nous allons prendre l&#39;exemple d&#39;URLs du type <em>http://www.monsite.com/lang/page.html</em>, ce qui a l&#39;avantage de bien r&eacute;f&eacute;rencer toutes les pages dans toutes les langues traduites. Mais nous pourrions tout aussi bien garder des URLs classiques dans le cas d&#39;un service accessible uniquement aux utilisateurs connect&eacute;s : par exemple Twitter. La langue serait alors enregistr&eacute;e dans les param&egrave;tres de l&#39;utilisateur.</p><p>Pour cela, mettons en place un .htaccess avec de l&#39;URL Rewriting &agrave; la racine :<br /><div class="code"><span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">On</span><br />
<span style="color: #00007f;">RewriteRule</span>    ^<span style="color: #66cc66;">&#40;</span>en|fr|it<span style="color: #66cc66;">&#41;</span>/<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>^\?<span style="color: #66cc66;">&#93;</span>+<span style="color: #66cc66;">&#41;</span>?<span style="color: #66cc66;">&#40;</span>\?<span style="color: #66cc66;">&#40;</span>.*<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>?$    /$<span style="color: #ff0000;">2</span>?$<span style="color: #ff0000;">4</span>&amp;lang=$<span style="color: #ff0000;">1</span>    <span style="color: #66cc66;">&#91;</span>QSA,L<span style="color: #66cc66;">&#93;</span><div style="display:none;">[code=apache]RewriteEngine On<br />RewriteRule&nbsp;&nbsp;&nbsp; ^(en|fr|it)/([^\?]+)?(\?(.*))?$ &nbsp;&nbsp; /$2?$4&amp;lang=$1&nbsp;&nbsp;&nbsp; [QSA,L][/code]</div></div><br />Et voil&agrave;, d&eacute;somais, un acc&egrave;s &agrave; la page <em>http://www.monsite.com/fr/page.php</em> appellera la page <em>page.php</em> &agrave; la racine du site en lui passant la variable GET lang=fr, ce qui aura pour effet avec le script pr&eacute;c&eacute;dent d&#39;enregistrer &quot;fr&quot; comme langue dans le cookie et la variable de session du visiteur.<br /><br /></p><p>Proposons maintenant au visiteur de choisir sa langue tout en restant sur la m&ecirc;me page, au cas o&ugrave; elle aurait &eacute;t&eacute; mal d&eacute;tect&eacute; (navigateur en anglais pour un fran&ccedil;ais par exemple) :<br /><div class="code"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #0000ff;">$URI</span> = <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'REQUEST_URI'</span><span style="color: #66cc66;">&#93;</span>; <br />
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$URI</span>==<span style="color: #ff0000;">'/'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$URI</span> = <span style="color: #ff0000;">'/'</span>.<span style="color: #0000ff;">$lang</span>.<span style="color: #ff0000;">'/'</span>; <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&lt;a href=<span style="color: #ff0000;">&quot;&lt;?php echo preg_replace('#^/[a-z]{2}#', '/en', $URI); ?&gt;&quot;</span>&gt;&lt;img src=<span style="color: #ff0000;">&quot;/images/en.png&quot;</span> alt=<span style="color: #ff0000;">&quot;English&quot;</span> /&gt;&lt;/a&gt;  <br />
&nbsp;&lt;a href=<span style="color: #ff0000;">&quot;&lt;?php echo preg_replace('#^/[a-z]{2}#', '/fr', $URI); ?&gt;&quot;</span>&gt;&lt;img src=<span style="color: #ff0000;">&quot;/images/fr.png&quot;</span> alt=<span style="color: #ff0000;">&quot;Français&quot;</span> /&gt;&lt;/a&gt;  <br />
&lt;a href=<span style="color: #ff0000;">&quot;&lt;?php echo preg_replace('#^/[a-z]{2}#', '/it', $URI); ?&gt;&quot;</span>&gt;&lt;img src=<span style="color: #ff0000;">&quot;/images/it.png&quot;</span> alt=<span style="color: #ff0000;">&quot;Italiano&quot;</span> /&gt;&lt;/a&gt;<div style="display:none;">[code=php]&lt;?php <br />$URI = $_SERVER[&#39;REQUEST_URI&#39;]; <br />if($URI==&#39;/&#39;) $URI = &#39;/&#39;.$lang.&#39;/&#39;; <br />?&gt;<br />&lt;a href=&quot;&lt;?php echo preg_replace(&#39;#^/[a-z]{2}#&#39;, &#39;/en&#39;, $URI); ?&gt;&quot;&gt;&lt;img src=&quot;/images/en.png&quot; alt=&quot;English&quot; /&gt;&lt;/a&gt;&nbsp; <br /> &lt;a href=&quot;&lt;?php echo preg_replace(&#39;#^/[a-z]{2}#&#39;, &#39;/fr&#39;, $URI); ?&gt;&quot;&gt;&lt;img src=&quot;/images/fr.png&quot; alt=&quot;Fran&ccedil;ais&quot; /&gt;&lt;/a&gt;&nbsp; <br />&lt;a href=&quot;&lt;?php echo preg_replace(&#39;#^/[a-z]{2}#&#39;, &#39;/it&#39;, $URI); ?&gt;&quot;&gt;&lt;img src=&quot;/images/it.png&quot; alt=&quot;Italiano&quot; /&gt;&lt;/a&gt;[/code]</div></div><br />Vous trouverez plein de super ic&ocirc;nes de drapeaux <strong><a href="http://www.famfamfam.com/lab/icons/flags/">ici</a></strong>.<br /><br /></p><h4>Stockage des traductions</h4><p>On peut imaginer deux solutions de stockage pour les textes traduits. J&#39;ai retenu la deuxi&egrave;me :<br /></p><p><strong>1- Premi&egrave;re solution :</strong> Une fonction getText choisissant entre plusieurs textes propos&eacute;s. Par exemple<br /><div class="code"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> <a href="http://www.php.net/gettext"><span style="color: #000066;">getText</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$en</span>, <span style="color: #0000ff;">$fr</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
    <a href="http://www.php.net/global"><span style="color: #000066;">global</span></a> <span style="color: #0000ff;">$lang</span>;<br />
    <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$lang</span>==<span style="color: #ff0000;">'fr'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$fr</span>;<br />
    <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$en</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<br />
<span style="color: #808080; font-style: italic;">// Affichage d'un texte traduit :</span><br />
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <a href="http://www.php.net/gettext"><span style="color: #000066;">getText</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Text in english'</span>, <span style="color: #ff0000;">'Texte en français'</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><div style="display:none;">[code=php]&lt;?php<br /><br />function getText($en, $fr){<br />&nbsp;&nbsp;&nbsp; global $lang;<br />&nbsp;&nbsp;&nbsp; if($lang==&#39;fr&#39;) return $fr;<br />&nbsp;&nbsp;&nbsp; else return $en;<br />}<br /><br />// Affichage d&#39;un texte traduit :<br />echo getText(&#39;Text in english&#39;, &#39;Texte en fran&ccedil;ais&#39;);<br />?&gt;[/code]</div></div><br />Ce n&#39;est pas tr&egrave;s pratique, et pas tr&egrave;s lisible d&egrave;s que les textes deviennent un peu gros et le nombre de langues grand.<br /><br /></p><p><strong>2- Deuxi&egrave;me solution :</strong> Le stockage des textes dans divers fichiers : un fichier par langue. L&#39;avantage ici est qu&#39;on peut traduire (ou faire traduire) le site en ajoutant simplement un seul fichier. Nous stockerons les fichiers <em>en.php</em>, <em>fr.php</em>, et <em>it.php</em> dans un dossiers <em>langs</em>. Il suffira d&#39;ajouter cette ligne apr&egrave;s la d&eacute;tection de la langue :<br /><div class="code"><span style="color: #b1b100;">require_once</span> <span style="color: #ff0000;">'langs/'</span>.<span style="color: #0000ff;">$lang</span>.<span style="color: #ff0000;">'.php'</span>;<div style="display:none;">[code=php]require_once &#39;langs/&#39;.$lang.&#39;.php&#39;;[/code]</div></div></p><p>Ensuite, nous avons encore le choix entre <strong>plusieurs m&eacute;thodes</strong> de stockage. Les deux principalement utilis&eacute;es consistent soit &agrave; cr&eacute;er une <strong>constante</strong> par texte, soit un grand <strong>tableau</strong> avec une entr&eacute;e par texte. La m&eacute;thode des constantes a l&#39;avantage d&#39;&ecirc;tre performante mais n&#39;est vraiment pas propre. Celle du tableau n&#39;est pas non plus des plus performantes. Je parle bien s&ucirc;r ici pour une grande &eacute;chelle : pr&eacute;voyons 15 000 entr&eacute;es pour voir r&eacute;ellement les diff&eacute;rences entre les m&eacute;thodes.</p><p>Je vais vous proposer une autre m&eacute;thode, une sorte de compromis, mais performante, pratique, et plus lisible. Elle consiste &agrave; utiliser une classe pour stocker les textes sous forme de constantes. Ces constantes restent dans la classe, c&#39;est donc propre, l&#39;acc&egrave;s y est tr&egrave;s facile, et les performances sont tr&egrave;s bonnes (j&#39;avais fait un benchmark il y a quelques mois, mais je ne l&#39;ai plus sous la main...). Nous allons donner un nom tr&egrave;s court &agrave; cette classe, par exemple &quot;_&quot;. Voici un exemple pour le fichier <em>fr.php</em>, il suffit ensuite de copier le fichier et de le traduire pour les autres langues :<br /><div class="code"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #808080; font-style: italic;">// Classe de stockage :</span><br />
final <span style="color: #000000; font-weight: bold;">class</span> <a href="http://www.php.net/_"><span style="color: #000066;">_</span></a> <span style="color: #66cc66;">&#123;</span><br />
    const TEXT1 = <span style="color: #ff0000;">'Mon premier texte en français'</span>;<br />
    const EXEMPLE = <span style="color: #ff0000;">'Ceci est un exemple'</span>;<br />
    const NUM = <span style="color: #ff0000;">'un, deux, trois'</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><div style="display:none;">[code=php]&lt;?php<br />// Classe de stockage :<br />final class _ {<br />&nbsp;&nbsp;&nbsp; const TEXT1 = &#39;Mon premier texte en fran&ccedil;ais&#39;;<br />&nbsp;&nbsp;&nbsp; const EXEMPLE = &#39;Ceci est un exemple&#39;;<br />&nbsp;&nbsp;&nbsp; const NUM = &#39;un, deux, trois&#39;;<br />}<br />?&gt;[/code]</div></div></p><p>Puis pour afficher le texte :<br /><div class="code"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #808080; font-style: italic;">// Affichage du texte :</span><br />
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <a href="http://www.php.net/_"><span style="color: #000066;">_</span></a>::<span style="color: #006600;">TEXT1</span> . <span style="color: #ff0000;">'&lt;strong&gt;'</span>. <a href="http://www.php.net/_"><span style="color: #000066;">_</span></a>::<span style="color: #006600;">EXEMPLE</span> . <span style="color: #ff0000;">'&lt;/strong&gt;&lt;br /&gt;'</span>. <a href="http://www.php.net/_"><span style="color: #000066;">_</span></a>::<span style="color: #006600;">NUM</span>;<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><div style="display:none;">[code=php]&lt;?php<br />// Affichage du texte :<br />echo _::TEXT1 . &#39;&lt;strong&gt;&#39;. _::EXEMPLE . &#39;&lt;/strong&gt;&lt;br /&gt;&#39;. _::NUM;<br />?&gt;[/code]</div></div><br /></p><p>&nbsp;</p><p>Et voil&agrave;, j&#39;esp&egrave;re que ce tuto pourra servir &agrave; quelqu&#39;un. Qu&#39;en pensez-vous ? Quelles solutions utilisez-vous ?<br /></p>]]></content:encoded>
		<pubDate>Wed, 09 Jul 2008 02:03:29 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2904-179180-internationalisation-d-un-site-web.html</guid>
	</item>
	<item>
		<title><![CDATA[Soirée Mixblog, du dossier !!]]></title>
		<link>http://www.skreo.net/article-2901-160731-soiree-mixblog-du-dossier.html</link>
		<dc:creator>Skreo</dc:creator>
		<description><![CDATA[Non d&eacute;sol&eacute; ce n&#39;est pas moi qui vous donnerai du dossier, car je n&#39;&eacute;tais pas de ceux qui mitraillaient les gens avec leurs R&eacute;flex Par contre je peux vous jurer qu&#39;il y en aura dans la journ&eacute;e, j&#39;&eacute;diterai cet article Dans l&#39;ensemble,...]]></description>
		<content:encoded><![CDATA[<p>Non d&eacute;sol&eacute; ce n&#39;est pas moi qui vous donnerai du dossier, car je n&#39;&eacute;tais pas de ceux qui mitraillaient les gens avec leurs R&eacute;flex <img alt=" " src="http://www.skreo.net/images/emoticons/tongue.gif" /> Par contre je peux vous jurer qu&#39;il y en aura dans la journ&eacute;e, j&#39;&eacute;diterai cet article <img alt=" " src="http://www.skreo.net/images/emoticons/mdr.gif" /></p><p>Dans l&#39;ensemble, la soir&eacute;e &eacute;tait bien organis&eacute;e et tr&egrave;s sympa. Le buffet &eacute;tait impeccable et gratuit, et l&#39;endroit bien adapt&eacute; &agrave; ce type d&#39;&eacute;v&eacute;nement. Un grand merci &agrave; &agrave; <a href="http://www.vinzblog.com/" title="VinzBlog.com" target="_blank">Vinz</a>, <a href="http://blog.ulrichjambrinrozier.com/" title="UlrichJambrinRozier.com" target="_blank">Ulrich</a>, <a href="http://www.acquatofana.fr/" title="Lucie Piriou" target="_blank">Lucie</a> et<a href="http://www.spvfrance.fr/" title="Pierre Trehorel" target="_blank"> Pierre</a> pour l&rsquo;organisation !</p><p>Comme j&#39;ai la m&eacute;ga flemme de mettre une galerie d&#39;image, je vous balance un zip des photos que j&#39;ai prises. Il y en a pas mal de floues mais bon...</p><p><a href="http://data0.murties.com/skreo/perso/images/mixblog/mixblog-juin-2008.zip"><img alt="Download" height="17" src="http://data0.murties.com/skreo/perso/images/icones/download.gif" width="17" /> Mixblog-juin-2008.zip</a> </p><p><br />Et puis en bonus :</p><p>&nbsp;<img alt="TomClarks" height="360" src="http://data0.murties.com/skreo/perso/images/mixblog/tomclarks.jpg" width="480" /><br /><a href="http://blog.tomclarks.net/">Le Roux</a>  dans toute sa splendeur</p><p><img alt="Caricature de Skreo" height="400" src="http://data0.murties.com/skreo/perso/images/mixblog/caracature_monsieurdream.jpg" width="300" /><br />Caricature de moi par <a href="http://www.monsieurdream.com">MonsieurDream</a>&nbsp;</p><p><br />EDIT : Voil&agrave; une des photos dossier de la soir&eacute;e : <a href="http://www.monsieurdream.com/index.php/2008/06/18/459-pirate-par-roi-heenok/">http://www.monsieurdream.com/index.php/2008/06/18/459-pirate-par-roi-heenok/</a> <br /></p>]]></content:encoded>
		<pubDate>Tue, 17 Jun 2008 16:08:11 +0200</pubDate>
		<guid isPermaLink="true">http://www.skreo.net/article-2901-160731-soiree-mixblog-du-dossier.html</guid>
	</item>
</channel>
</rss><!--mdp=-->