Séparer les nombres des lettres
La fonction separeNumeric est un filtre à appliquer sur un String: Son principe est le suivant:- extraire les chiffres du texte,
- filtrer les caractères valides.
<?php
/**
* Class PHP pour extraire les chiffres et les lettres d'un string
*
* http://www.fobec.com/php5/998/extraire-chiffres-lettres-string.html*
*/
class StringUtils {
/**
* Extraire les chiffres et les caractères d'un string
* @param string $text
* @return array tableau['num', 'char']
*/
public static function separeNumeric($text) {
$nums="";
$chars="";
if ($text!=null&&strlen($text)>0) {
for ($i=0;$i<strlen($text);$i++) {
$c=$text[$i];
if(is_numeric($c)) {
$nums.= $c;
} else if (eregi("[a-zA-Z]+", $c)) {
$chars.= $c;
}
}
}
return array('num'=>$nums, 'char'=>$chars);
}
}
?>
Nettoyer un texte
Dans un texte comprtant des erreurs de charset ou de langue étrangère, voyons comment extraire uniquement les caractères valides.<?php
$s='le12str#éù34in&6g';
$ar=StringUtils::separeNumeric($s);
echo ($ar['num']);
//Affiche '12346'
echo ($ar['char']);
//Affiche 'lestring'.
?>
La méthode peut également etre utilisée pour scraper une page HTML. Par exemple, sur une page de langue anglaise, on souhaite récupérer un nombre. Le format américain prévoit une vigule comme séparateur de millier. Au lieu de convertir la somme vers le format français, il est plus rapide d'extraire uniquement les nombres du string pour obtenir la valeur affichée.