Stᅵphane Santon :
> Bonjour,
>
> Pour le calcul d'une url, je dᅵsire filtrer les petits mots de mon choix dans
> une chaine :
> - placᅵs en dᅵbut de chaine et suivis d'un tiret,
> - placᅵs en fin de chaine et prᅵcᅵdᅵs d'un tiret,
> - placᅵs dans la chaine et entourᅵs d'un tiret.
>
> Voici ce que je fais et qui fonctionne.
>
> $lsMasque = array(
> '(^au-|^de-|^du-|^des-|^en-|^l-|^le-|^la-|^les-)',
> '(-au-|-de-|-du-|-des-|-en-|-l-|-le-|-la-|-les-)',
> '(-au$|-de$|-du$|-des$|-en$|-l$|-le$|-la$|-les$)'
> );
> $lsUrl = preg_replace( $lsMasque, array('','-',''), $lsUrl);
>
> Mais y aurait-il plus simple ?
Je pratique peu les expressions rationnelles, et surtout pas en Php.
C'est d'ailleurs parce que je le regrette que je lis les messages de ce
groupe, en tant qu'exercice ;-)
Votre code me semble lisible, et maintenable, c'est liᅵ. On imagine
qu'il est sans doute factorisable un chouᅵa. Je saurais faire un truc
en Python, en Php, en me contentant de bricoler sur du texte, on peut
peut-ᅵtre envisager un truc comme:
$petitsmots = array(
'au', 'de', 'du', 'des', 'en', 'l', 'le', 'la', 'les'
);
$petitsmots = implode('|', $petitsmots);
$lsMasque = array(
'(^('.$petitsmots.')-)',
'(-('.$petitsmots.')-)',
'(-('.$petitsmots.')$)'
);
--
Pierre Maurette