Les expressions régulières
Expressions régulières
Une compilation de conseils et d'exemples sur les expressions régulières. Histoire de ne pas avoir de multiples sources de renseignements pour des choses simples et qui reviennent souvent. �videmment, ces regex d'exemples et ces conseils sont initialement tirés de ce site pour montrer qu'ils sont utilisables directement.
global $TabWidth, $Tabs, $TabLengths;
$Tabs = array(); $TabLengths = array();
for($j=0; $j<=$TabWidth; $j++) $TabLengths[$j] = strlen($Tabs[$j] = $j ? ($Tabs[$j-1])." " : "");
$Ln = strlen($snip);
$Computed = 0;
foreach(array(true, false) as $ComputeWidth) {
$PosInLine = 0;
$i = 0;
while ($i<$Ln) {
$c = $snip[$i++];
if ($c == "\n") $PosInLine = -1;
if ($c != "\t") { $PosInLine++; continue; }
//On étend les tabs
$RealWidth = $TabWidth - $PosInLine%$TabWidth;
$Offset = $TabLengths[$RealWidth] - 1;
if (!$ComputeWidth) {
$snip = substr($snip, 0, $i-1).$Tabs[$RealWidth].substr($snip, $i);
$Ln += $Offset; $i += $Offset;
} else $Computed += $Offset;
$PosInLine += $RealWidth;
if ($ComputeWidth) $Computed++;
}
}
Boucle qui étend les tabs d'une chaîne, $snip, en 2 passes : calcul de la taille finale et transformation.
Une expression régulière tirée d'un commentaire de la doc PHP de preg_grep.
/((?:(?!BADWORD).)*)/s
Regexp pour éliminer BADWORD de l'entrée
