Asselin Benoit Développement - Création et conception de sites internet - Amiens Somme Picardie Paris France

Comment forcer le téléchargement d'un fichier ? ( Header, FilesMatch )
09`01`2009

1 commentairePoster un commentaire !
Tags: htaccess Regex

Comment forcer le téléchargment d'un fichier sans utiliser de script PHP (ou autres...) ?
Solution : Un simple fichier .htaccess à placer dans le dossier désiré !

<IfModule mod_headers.c>
	<FilesMatch "\.(jpe?g)$">
		ForceType image/jpeg
		Header set Content-Disposition attachment
	</FilesMatch>
</IfModule>

A noter : en cas de dysfonctionnement, cela veut dire que le mod_headers n'est pas installé, ou est indisponible sur votre serveur Apache.

Documentation officielle :
• http://httpd.apache.org/docs/2.0/mod/core.html#filesmatch
• http://httpd.apache.org/docs/2.0/mod/mod_headers.html


Combinaison de document.getElementById et RegExp ( javascript, dom )
14`12`2008

7 commentairesPoster un commentaire !
Tags: Javascript Regex DOM

On sent que la récession en France est très forte, j'ai moi-même du mal à joindre les 2 bouts... notamment à propos du temps qui m'est disponible pour rédiger ce poste (Travailler plus, pour gagner plus, qui disait !).
L'idée du code source du jour :

Rechercher dans une page (X)HTML, les IDentifiants correspondant à une expression régulière new RegExp.

function getElementsByRegExpId(p_regexp, p_element, p_tagName) {
	p_element = p_element === undefined ? document : p_element;
	p_tagName = p_tagName === undefined ? '*' : p_tagName;
	var v_return = [];
	var v_inc = 0;
	for(var v_i = 0, v_il = p_element.getElementsByTagName(p_tagName).length; v_i < v_il; v_i++) {
		if(p_element.getElementsByTagName(p_tagName).item(v_i).id && p_element.getElementsByTagName(p_tagName).item(v_i).id.match(p_regexp)) {
			v_return[v_inc] = p_element.getElementsByTagName(p_tagName).item(v_i);
			v_inc++;
		}
	}
	return v_return;
}

// Exemple d'utilisation
var v_array = getElementsByRegExpId(/^test.+/);


Créer / convertir des adresses de sites internet HTTP en liens cliquables
23`03`2008

2 commentairesPoster un commentaire !
Tags: PHP Regex XHTML

La fonction ci-dessous vous permet par l'intérmédiaire des expressions régulières de convertir automatiquement les adresses de sites internet http://www.ab-d.fr/ en lien actif avec la balise <a href="http://www.ab-d.fr/" onclick="window.open(this.href); return false;">http://www.ab-d.fr/</a>.

Accessoirement, la fonction convertit aussi les adresses emails... libre à vous de rajouter d'autres fonctionnalités de remplacement grâce à la fonction preg_replace().

function texte2url($texte) {
	$patterns[0] = '/(https?:\/\/\S+)/i';
	$replacements[0] = '<a href="$1" onclick="window.open(this.href); return false;">$1</a>';
	
	$patterns[1] = '/(\S+@\S+\.\S+)/i';
	$replacements[1] = '<a href="mailto:$1">$1</a>';
	
	return preg_replace($patterns, $replacements, $texte);
}


Equivalent de parseInt en PHP avec preg_match (PHP, Regex, Javascript)
15`03`2008

5 commentairesPoster un commentaire !
Tags: PHP Regex

La fonction parseInt() en Javascript tansforme une chaîne de caractères en nombre entier et renvoie la valeur numérique de celle-ci comme résultat. Le plus proche équivalent en PHP est la fonction intval(). Toutefois, le résultat retourné me semble trop restrictif avec des chaînes de caractères ne débutant pas par un nombre. Les expressions rationnelles (ou expressions régulières) permettent de outre passer cette limitation. Pour ce faire, on utilise la fonction preg_match() :

function parseInt($string) {
//	return intval($string);
	if(preg_match('/(\d+)/', $string, $array)) {
		return $array[1];
	} else {
		return 0;
	}
}

echo parseInt("2008");
echo parseInt("soit 99.90 francs");
echo parseInt("www.w3.org");
echo parseInt("300 soldats spartiates");
echo parseInt("du texte brut...");

Ce script affichera comme résultat :
- 2008
- 99
- 3
- 300
- 0


Comment utiliser les expressions régulières dans MySQL ? (regex, regexp)
19`01`2008

Aucun commentairePoster un commentaire !
Tags: MySQL Regex Expressions regulieres

Le principal avantage est de pouvoir construire des requêtes beaucoup plus complexes qu'un simple LIKE en exploitant toute la puissance des expressions régulières.

Quelques exemples basiques

SELECT * FROM clients WHERE nom LIKE 't%' ;
SELECT * FROM clients WHERE nom REGEXP '^t' ;

SELECT * FROM clients WHERE nom LIKE '%d' ;
SELECT * FROM clients WHERE nom REGEXP "d$";

Exemple plus difficile à réaliser avec un simple LIKE

SELECT * FROM clients WHERE nom REGEXP '^.{4}$' ;

Autre exemple : isoler un mot précis

SELECT * FROM textes WHERE contenu REGEXP '[^a-z]bonjour[^a-z]' ;

Si vous désirez que votre requête soit sensible à la casse, vous devez utiliser la commande REGEXP BINARY.

SELECT * FROM textes WHERE contenu REGEXP BINARY '[^a-zA-Z]Bonjour[^a-zA-Z]' ;

Attention: Au niveau sécurité, au delà de la protection contre les injections SQL, n'oubliez pas aussi de protéger vos requêtes contre les injections d'expressions régulières par rapport aux caractères spéciaux comme les ".", "*", "+", "?", etc...