<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Retour à La Source • Tag: Regex • RSS</title>
		<link>http://www.ab-d.fr/tag/Regex/</link>
		<description>Retour à La Source • Tag: Regex • RSS</description>
		<copyright>http://www.ab-d.fr/tag/Regex/ (c) 2012</copyright>
		<language>fr</language>
		<pubDate>Sun, 05 Feb 2012 01:21:08 +0100</pubDate>
		<generator>Retour à La Source • Tag: Regex • RSS • version 1.0</generator>
		<webMaster>noreply@ab-d.fr ( Benoit Asselin )</webMaster>
		<image>
			<url>http://www.ab-d.fr/images/rss.gif</url>
			<title>Retour à La Source • Tag: Regex • RSS</title>
			<link>http://www.ab-d.fr/tag/Regex/</link>
			<width>90</width>
			<height>30</height>
		</image>

		<item>
			<title>Comment forcer le téléchargement d'un fichier ? ( Header, FilesMatch )</title>
			<link>http://www.ab-d.fr/date/2009-01-09/</link>
			<pubDate>Fri, 09 Jan 2009 22:00:22 +0100</pubDate>
			<author>noreply@ab-d.fr ( Benoit Asselin )</author>
			<category><![CDATA[htaccess]]></category>
			<category><![CDATA[Regex]]></category>
			<description><![CDATA[<p>
Comment forcer le téléchargment d'un fichier sans utiliser de script PHP (ou autres...) ?<br />
Solution : Un simple fichier <code>.htaccess</code> à placer dans le dossier désiré !
</p>

<pre>
&lt;IfModule mod_headers.c&gt;
	&lt;FilesMatch &quot;\.(jpe?g)$&quot;&gt;
		ForceType image/jpeg
		Header set Content-Disposition attachment
	&lt;/FilesMatch&gt;
&lt;/IfModule&gt;
</pre>

<p><em>
A noter : en cas de dysfonctionnement, cela veut dire que le <code>mod_headers</code> n'est pas installé, ou est indisponible sur votre serveur Apache.
</em></p>

<p>
Documentation officielle :<br />
&bull; http://httpd.apache.org/docs/2.0/mod/core.html#filesmatch<br />
&bull; http://httpd.apache.org/docs/2.0/mod/mod_headers.html<br />
</p>

<hr /><a href="http://res.feedsportal.com/viral/bookmark_fr.cfm?link=http%3A%2F%2Fwww.ab-d.fr%2Fdate%2F2009-01-09%2F&title=Comment+forcer+le+t%C3%A9l%C3%A9chargement+d%27un+fichier+%3F+%28+Header%2C+FilesMatch+%29"><img src="http://www.ab-d.fr/images/bookmark.gif" border="0" /></a><br /><br />]]></description>
			<comments>http://www.ab-d.fr/tag/Regex/</comments>
			<guid isPermaLink="false">http://www.ab-d.fr/date/2009-01-09/</guid>
		</item>

		<item>
			<title>Combinaison de document.getElementById et RegExp ( javascript, dom )</title>
			<link>http://www.ab-d.fr/date/2008-12-14/</link>
			<pubDate>Sun, 14 Dec 2008 22:41:42 +0100</pubDate>
			<author>noreply@ab-d.fr ( Benoit Asselin )</author>
			<category><![CDATA[Javascript]]></category>
			<category><![CDATA[Regex]]></category>
			<category><![CDATA[DOM]]></category>
			<description><![CDATA[<p>
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 (<em>Travailler plus, pour gagner plus, qui disait !</em>).<br />
L'idée du code source du jour :</p>
<p>
Rechercher dans une page (X)HTML, les <code>ID</code>entifiants correspondant à une expression régulière <code>new RegExp</code>.
</p>

<pre>
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 &lt; v_il; v_i++) {
		if(p_element.getElementsByTagName(p_tagName).item(v_i).id &amp;&amp; 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.+/);

</pre>

<hr /><a href="http://res.feedsportal.com/viral/bookmark_fr.cfm?link=http%3A%2F%2Fwww.ab-d.fr%2Fdate%2F2008-12-14%2F&title=Combinaison+de+document.getElementById+et+RegExp+%28+javascript%2C+dom+%29"><img src="http://www.ab-d.fr/images/bookmark.gif" border="0" /></a><br /><br />]]></description>
			<comments>http://www.ab-d.fr/tag/Regex/</comments>
			<guid isPermaLink="false">http://www.ab-d.fr/date/2008-12-14/</guid>
		</item>

		<item>
			<title>Créer / convertir des adresses de sites internet HTTP en liens cliquables</title>
			<link>http://www.ab-d.fr/date/2008-03-23/</link>
			<pubDate>Sun, 23 Mar 2008 04:03:02 +0100</pubDate>
			<author>noreply@ab-d.fr ( Benoit Asselin )</author>
			<category><![CDATA[PHP]]></category>
			<category><![CDATA[Regex]]></category>
			<category><![CDATA[XHTML]]></category>
			<description><![CDATA[<p>
La fonction ci-dessous vous permet par l'intérmédiaire des expressions régulières de convertir automatiquement les adresses de sites internet <code>http://www.ab-d.fr/</code> en lien actif avec la balise <code>&lt;a href="http://www.ab-d.fr/"  onclick="window.open(this.href); return false;"&gt;http://www.ab-d.fr/&lt;/a&gt;</code>.
</p>
<p>
Accessoirement, la fonction convertit aussi les adresses emails... libre à vous de rajouter d'autres fonctionnalités de remplacement grâce à la fonction <code>preg_replace()</code>.</p>
<pre>
function texte2url($texte) {
	$patterns[0] = '/(https?:\/\/\S+)/i';
	$replacements[0] = '&lt;a href="&#x24;1" onclick="window.open(this.href); return false;"&gt;&#x24;1&lt;/a&gt;';
	
	$patterns[1] = '/(\S+@\S+\.\S+)/i';
	$replacements[1] = '&lt;a href="mailto:&#x24;1"&gt;&#x24;1&lt;/a&gt;';
	
	return preg_replace($patterns, $replacements, $texte);
}

</pre>

<hr /><a href="http://res.feedsportal.com/viral/bookmark_fr.cfm?link=http%3A%2F%2Fwww.ab-d.fr%2Fdate%2F2008-03-23%2F&title=Cr%C3%A9er+%2F+convertir+des+adresses+de+sites+internet+HTTP+en+liens+cliquables"><img src="http://www.ab-d.fr/images/bookmark.gif" border="0" /></a><br /><br />]]></description>
			<comments>http://www.ab-d.fr/tag/Regex/</comments>
			<guid isPermaLink="false">http://www.ab-d.fr/date/2008-03-23/</guid>
		</item>

		<item>
			<title>Equivalent de parseInt en PHP avec preg_match (PHP, Regex, Javascript)</title>
			<link>http://www.ab-d.fr/date/2008-03-15/</link>
			<pubDate>Sat, 15 Mar 2008 18:52:52 +0100</pubDate>
			<author>noreply@ab-d.fr ( Benoit Asselin )</author>
			<category><![CDATA[PHP]]></category>
			<category><![CDATA[Regex]]></category>
			<description><![CDATA[<p>
La fonction <code>parseInt()</code> 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 <code>intval()</code>. 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 <code>preg_match()</code> :
</p>
<pre>
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...");

</pre>

<p>Ce script affichera comme résultat : <br />
- 2008<br />
- 99<br />
- 3<br />
- 300<br />
- 0<br />
</p>

<hr /><a href="http://res.feedsportal.com/viral/bookmark_fr.cfm?link=http%3A%2F%2Fwww.ab-d.fr%2Fdate%2F2008-03-15%2F&title=Equivalent+de+parseInt+en+PHP+avec+preg_match+%28PHP%2C+Regex%2C+Javascript%29"><img src="http://www.ab-d.fr/images/bookmark.gif" border="0" /></a><br /><br />]]></description>
			<comments>http://www.ab-d.fr/tag/Regex/</comments>
			<guid isPermaLink="false">http://www.ab-d.fr/date/2008-03-15/</guid>
		</item>

		<item>
			<title>Comment utiliser les expressions régulières dans MySQL ? (regex, regexp)</title>
			<link>http://www.ab-d.fr/date/2008-01-19/</link>
			<pubDate>Sat, 19 Jan 2008 23:30:00 +0100</pubDate>
			<author>noreply@ab-d.fr ( Benoit Asselin )</author>
			<category><![CDATA[MySQL]]></category>
			<category><![CDATA[Regex]]></category>
			<category><![CDATA[Expressions regulieres]]></category>
			<description><![CDATA[<p>Le principal avantage est de pouvoir construire des requêtes beaucoup plus complexes qu'un simple <code>LIKE</code> en exploitant toute la puissance des expressions régulières.</p>

<p>Quelques exemples basiques</p>
<pre>
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$";
</pre>

<p>Exemple plus difficile à réaliser avec un simple <code>LIKE</code></p>
<pre>
SELECT * FROM clients WHERE nom REGEXP '^.{4}$' ;
</pre>

<p>Autre exemple : isoler un mot précis</p>
<pre>
SELECT * FROM textes WHERE contenu REGEXP '[^a-z]bonjour[^a-z]' ;
</pre>

<p>Si vous désirez que votre requête soit sensible à la casse, vous devez utiliser la commande <code>REGEXP BINARY</code>.</p>
<pre>
SELECT * FROM textes WHERE contenu REGEXP BINARY '[^a-zA-Z]Bonjour[^a-zA-Z]' ;
</pre>

<p><ins>Attention:</ins> 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...</p>

<hr /><a href="http://res.feedsportal.com/viral/bookmark_fr.cfm?link=http%3A%2F%2Fwww.ab-d.fr%2Fdate%2F2008-01-19%2F&title=Comment+utiliser+les+expressions+r%C3%A9guli%C3%A8res+dans+MySQL+%3F+%28regex%2C+regexp%29"><img src="http://www.ab-d.fr/images/bookmark.gif" border="0" /></a><br /><br />]]></description>
			<comments>http://www.ab-d.fr/tag/Regex/</comments>
			<guid isPermaLink="false">http://www.ab-d.fr/date/2008-01-19/</guid>
		</item>

	</channel>
</rss>

