Articles

Le mois de la fonction PHP : découpage à la regex

  • Ecrit par Julien Pauli
  • mardi 24 avril 2007
Image pour le titre du contenu

This document is also available in English en 



preg_split() éclate une chaine par expression rationnelle. Elle est dans la lignée de explode() et str_split(), sauf que preg_split() utilise le moteur d'expression rationnelle, à la fois plus puissant, mais aussi plus lent.

 



Exemple 1 - Compter le nombre de mots dans une phrase :

<?php
function FindMots($s){
      $p=preg_split("/\s+/",$s);
      foreach($p as $w){
          $a[strtolower($w)]++;
      }
      return $a;
  }
 
  $s='PHP langage de programmaTION Php PhP LangAgE';
  print_r(FindMots($s));
?><strong>
</strong>

Exemple 2 - Conversion d'entités html avec exceptions :

<?php
function html_convert ($string) {
  $out = '';
  $pattern = '/(<\/?(?:a .*|h1|h2|b|i|html)>)/ims';
  $array = preg_split( $pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
  foreach ($array as $element) {
    if (!preg_match($pattern, $element)){
      $out .= htmlspecialchars ($element);
  }else{
  $out .= $element;
}
}
  return $out;
}
echo html_convert('<html><b>foo</b><i>bar</i>un texte hors balise<p>balis&Egrave; avec paragraphe</p><h1>et titre de forme h1</h1></html>');
?><strong>
</strong>

Exemple 3 - Récupérer les types mimes gérés par un navigateur :

<?php
$mimetypes = preg_split(';[\s,]+;', substr(getenv('HTTP_ACCEPT'), 0, strpos(getenv('HTTP_ACCEPT') . ';', ';')), -1, PREG_SPLIT_NO_EMPTY);
// par exemple : Array ( [0] => text/xml [1] => application/xml [2] => application/xhtml+xml [3] => text/html )  
?><strong>
</strong>

A mémoriser

< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter