Code-Scripts
Sur cette page, je vais partager avec vous les scripts PHP (et parfois Javascripts) que j'ai bidouillé pour faire certaines des fonctions que j'ai mis sur ce site.
Pour afficher le code de mes source de façon agréable visuellement, j'ai utilisé le code Javascript "SyntaxHighlighter" que vous pouvez trouver sur le site Google :
http://code.google.com/p/syntaxhighlighter/
Affichage et lecture du contenu d'un podcast
Voici le code PHP que j'ai utilisé sur la page Presse, pour pouvoir lire directement ou télécharger les podcasts MP3.
<?php
// Lit une page web dans une variable
$texte = file_get_contents ('http://feeds.feedburner.com/AmericaTheGreen.xml');
// extrait l'url du mp3
preg_match("/http\:([a-zA-Z0-9\-_\/\.~]*)\.mp3/", $texte, $sortie);
// met l'url du mp3 dans une variable
$urlmp3 = $sortie[0];
// Affiche le flash avec le mp3
echo
"<object type=\"application/x-shockwave-flash\" data=\"flash/dewplayer-vol.swf?mp3=$urlmp3\" width=\"250\" height=\"20\">
<param name=\"movie\" value=\"flash/dewplayer-vol.swf?mp3=$urlmp3\" />
</object>";
// Affiche le lien mp3 direct
echo "<a href='$urlmp3'><img src='puces/ipod_sound.png' width='16' height='16' alt='mp3' title='Télécharger le podcast en mp3' border='0' /></a>";
?>
Ligne 03 :
La première chose c'est de récupérer l'adresse du fichier de podcast (généralement un fichier XML) et de mettre son contenu dans une variable. On fait cela avec la fonction "file_get_contents".
Ligne 06 :
Ensuite on extrait l'url, grâce à une expression régulière, avec la fonction "preg_match".
La première partie, que vous voyez en bleu, c'est l'expression régulière.
$texte c'est la variable sur laquelle on va executer la recherche.
$sortie c'est la variable (un tableau [array] en fait) dans laquelle va être injectée le résultat et que l'on va par la suite pouvoir utiliser.
La première partie, que vous voyez en bleu, c'est l'expression régulière.
$texte c'est la variable sur laquelle on va executer la recherche.
$sortie c'est la variable (un tableau [array] en fait) dans laquelle va être injectée le résultat et que l'on va par la suite pouvoir utiliser.
Pour le motif de recherche, on va voir quelque-chose qui commence par "http:", qui finit par ".mp3" et qui entre les deux peut contenir des lettres (a-zA-Z), des chiffres (0-9) ou les caractères spéciaux "-_/.~". Pour éviter a certains caractères spéciaux d'avoir une fonction spéciale dans la recherche, on annule leur utilité éventuelle en rajoutant un anti-slash devant "\". Les crochets "[]" veulent dirent : un de ces caractères là. L'étoile après les crochets "[]*" indique qu'on peut trouver plusieurs ou plusieurs fois un de ces caractères.
Ligne 09 :
Ensuite on récupère le premier URL trouvé $sortie[0] et on le met dans une variable $urlmp3 (ce n'est pas une étape obligatoire). $sortie est un tableau qui contient tous les liens mp3 trouvé dans le fichier XML, mais on ne va récupérer que le premier qui est généralement le plus récent.
Ligne 12 :
On utilise la commande echo pour afficher du html, mais comme ce sont les guillemets qui délimitent le html, celles qui sont à l'intérieures doivent être protégé par un antislash \" .
Ligne 13 :
Maintenant on peut afficher le lecteur flash MP3 "Dewplayer" (www.alsacreations.fr/dewplayer) avec le lien de notre MP3 comme paramètre.
Ligne 19 :
On peut ensuite proposer un lien vers le mp3, sous forme de texte, ou comme ici avec l'image d'un balladeur mp3. Afin de pouvoir le télécharger directement sur son PC.
Affichage seulement en local
Voici un script qui sert à à afficher des choses en local et pas quand les pages php sont sur un serveur web. Pratique pour faire des tests qui n'apparaissent pas sur le site web officiel.
<?php
if (ereg("^/", $_SERVER['DOCUMENT_ROOT']))
{ echo ""; }
else { echo " html "; }
?>
Ligne 2 :
On teste si la racine du serveur commence par "/", ce qui veut dire qu'on est
sur un vrai serveur web et non pas sur son PC en local.
Ligne 3 :
On est sur internet, donc ne rien afficher.
Ligne 4 :
Sinon c'est qu'on est en local, donc afficher le html que l'on veut - penser à mettre des anti-slash \ devant les guillemets qui se trouvent dans ce html.
Affichage uniquement avant ou après une certaine date
Ce script permet d'afficher quelque-chose uniquement avant ou après une certaine date.
Dans cet exemple, on va afficher une image jusqu'au 1er Septembre 2007 (2007-09-01) compris.
<?php
if ( date('Ymd') <= 20070901)
{
print("<img src='puces/info.gif' width='12' height='12' >");
}
?>
Ligne 2 :
date('Ymd') représente la date avec Y=année sur 4 chiffres, m=mois, d=jour (day). Je vous conseille de le mettre dans cet ordre, sinon le signe de comparaison (< pour afficher jusqu'à une date et > pour afficher un truc après une certaine date) ne fonctionnera pas correctement.
Ligne 4 :
print est équivalent à echo. Comme vous le voyez, à la place de mettre \" pour les guillemets, on peut mettre une apostrophe ' , c'est plus lisible visuellement.
Résolution du bug de plusieurs OnLoad
Certains JavaScripts sont lancés au démarrage du chargement de la page par la fonction OnLoad (généralement dans la ligne body). Apparement, on ne peut pas lancer plus d'un script OnLoad à la fois.
Voici le JavaScript qui permet a deux javascript qui utilisent "OnLoad" en même temps de fonctionner. (On est bien sûr pas limité à 2 scripts.
Source : http://www.babylon-design.com/..eviter-conflit-javascript-window-onload
<script type="text/javascript">
//<![CDATA[
// Fonction de stockage des scripts à charger
FuncOL = new Array();
function StkFunc(Obj) { FuncOL[FuncOL.length] = Obj; }
// Execution des scripts au chargement de la page
window.onload = function() { for(i=0; i<FuncOL.length; i++) {FuncOL[i]();} }
StkFunc(script1); // Lance le script 1
StkFunc(script2); // Lance le script 2
//]]>
</script>