Valid XHTML     Valid CSS2    

Listing du fichier strfun.php

 

00001     <?php
00002     
00003     #    (gH)   -_-  strfun.php  ;  TimeStamp (unix) : 06 Avril 2006 vers 11:22
00004     
00005     # strfun.php version 3.17
00006     
00007     ###########################################################
00008     ###########################################################
00009     ##                                                       ##
00010     ##   fonctions utiles pour chaines de caractères         ##
00011     ##                                                       ##
00012     ###########################################################
00013     ###########################################################
00014     
00015     function 
copies($chen,$frep) {
00016     
00017     ###########################################################
00018     
00019     # recopie un nb de fois spécifié la chaine
00020     
00021       $chret 
"" ;
00022       for ($idr
=1;$idr<=$frep;$idr++) {
00023         $chret 
.= $chen ;
00024       } ; # fin pour idr
00025       return(
$chret) ;
00026     } ; # fin de fonction copies
00027     
00028     ###########################################################
00029     ###########################################################
00030     
00031     function 
compteMots $phrase) {
00032     
00033     ###########################################################
00034     
00035     if (
strlen(trim($phrase))==0) { return "" ; } ;
00036     
00037     # renvoie le n-iÉme mot d'une phrase
00038     
00039       $phrase 
chop(trim($phrase)) ;
00040       $tmots 
explode(" ",trim($phrase)) ;
00041       # il est possible que des espaces consécutifs
00042       # perturbent explode donc on vérifie
00043       # que les "mots" sont non vides
00044     
00045       $vnnbm 
;
00046       $nbt 
count($tmots) ;
00047       for ($idm
=0;$idm<$nbt;$idm++) {
00048           $mot 
$tmots[$idm] ;
00049           # print " mot $idm = $mot\n" ;
00050           if (
strlen($mot)>0) {
00051               $vnnbm
++ ;
00052           } ; # fin si
00053       } ; 
# fin pour chaque
00054     
00055       return(
$vnnbm) ;
00056     
00057     } ; # fin de fonction compteMots
00058     
00059     ###########################################################
00060     
00061     function 
mot $phrase$num) {
00062     
00063     ###########################################################
00064     
00065     # renvoie le n-ième mot d'une phrase
00066     
00067       $phrase 
chop(trim($phrase)) ;
00068       $tmots 
explode(" ",trim($phrase)) ;
00069       # il est possible que des espaces consécutifs
00070       # perturbent explode donc on vérifie
00071       # que les "mots" sont non vides
00072     
00073       $vnbm 
;
00074       $nbt 
count($tmots) ;
00075       $vtmots 
= array() ;
00076       for ($idm
=0;$idm<$nbt;$idm++) {
00077           $mot 
$tmots[$idm] ;
00078           # print " mot $idm = $mot\n" ;
00079           if (
strlen($mot)>0) {
00080               $vnbm
++ ;
00081               $vtmots
[$vnbm] = $mot ;
00082           } ; # fin si
00083       } ; 
# fin pour chaque
00084       if ((
$num==0) or (!isset($vtmots[$num]))) {
00085         $lm 
"" ;
00086       } else {
00087         $lm    
$vtmots[$num] ;
00088       } ; # fin de si
00089       return 
$lm ;
00090     
00091     } ; # fin de fonction mot
00092     
00093     ###########################################################
00094     
00095     function 
nbmots $phrase) {
00096     
00097     ###########################################################
00098     
00099     # renvoie le n-ième mot d'une phrase
00100     
00101       $phrase 
chop(trim($phrase)) ;
00102       $tmots 
explode(" ",trim($phrase)) ;
00103       # il est possible que des espaces consécutifs
00104       # perturbent explode donc on vérifie
00105       # que les "mots" sont non vides
00106     
00107       $vnbm 
;
00108       $nbt 
count($tmots) ;
00109       for ($idm
=0;$idm<$nbt;$idm++) {
00110           $mot 
$tmots[$idm] ;
00111           # print " mot $idm = $mot\n" ;
00112           if (
strlen($mot)>0) {
00113               $vnbm
++ ;
00114           } ; # fin si
00115       } ; 
# fin pour chaque
00116     
00117       return(
$vnbm) ;
00118     
00119     } ; # fin de fonction nbMots
00120     
00121     
00122     ###########################################################
00123     ###########################################################
00124     
00125     function 
premierCarNonNul$chen ) {
00126     
00127     ###########################################################
00128     
00129       # renvoie le premier caractère qui n'est pas un espace
00130       # pour chaine vide, on renvoie "" et pour que des espaces,
00131       # on envoie "_"
00132     
00133       $cr 
"" ;
00134       $lng 
strlen$chen ) ;
00135       if ($lng
>0) {
00136          $cr 
"_" ;
00137          $idc 
;
00138          while ($idc
<$lng) {
00139            $cc 
substr($chen,$idc,1) ;
00140            if ($cc
==" ") { $idc++ ; } else { $cr $cc $idc $lng ; } ;
00141          } ; # fintant que
00142       } ; 
# fin de si
00143       return 
$cr ;
00144     
00145     } ; # fin de fonction premierCarNonNul
00146     
00147     ###########################################################
00148     ###########################################################
00149     
00150     function 
surncarg$chen $lng ) {
00151     
00152     ###########################################################
00153     
00154     # cadre la chaine à gauche sur une longueur donnée
00155     # cette fonction ne déborde pas contrairement à sprintf
00156     
00157       $cop 
copies(" ",$lng) ;
00158       $res 
substr($chen.$cop,0,$lng-1) ;
00159       return $res 
;
00160     
00161     } ; # fin de fonction surncarg
00162     
00163     ###########################################################
00164     
00165     function 
surncard$chen $lng ) {
00166     
00167     ###########################################################
00168     
00169     # cadre la chaine à droite sur une longueur donnée
00170     # cette fonction ne déborde pas contrairement à sprintf
00171     
00172       $res 
$chen ;
00173       while (strlen
($res)<$lng) { $res $res; } ;
00174       return $res 
;
00175     
00176     } ; # fin de fonction surncarg
00177     
00178     ###########################################################
00179     
00180     function 
surncardzero$chen $lng ) {
00181     
00182     ###########################################################
00183     
00184     # cadre la chaine à droite sur une longueur donnée
00185     # cette fonction ne déborde pas contrairement à sprintf
00186     
00187       $res 
$chen ;
00188       while (strlen
($res)<$lng) { $res "0$res; } ;
00189       return $res 
;
00190     
00191     } ; # fin de fonction surncarg
00192     
00193     ###########################################################
00194     
00195     function 
surncardnbsp$chen $lng ) {
00196     
00197     ###########################################################
00198     
00199     # cadre la chaine à droite sur une longueur donnée
00200     # cette fonction ne déborde pas contrairement à sprintf
00201     
00202       $ajout 
copies("&nbsp;",$lng-strlen($res)) ;
00203       $res 
$ajout.$chen ;
00204       return $res 
;
00205     
00206     } ; # fin de fonction surncarg
00207     
00208     ###########################################################
00209     
00210     function 
nbdif$seq1 $seq2 ) {
00211     
00212     ###########################################################
00213     
00214       # renvoie le nombre de différences entre deux chaines
00215       # on complète la plus petite pour comparer deux chaines de longeurs égales
00216     
00217       $lng1 
strlen($seq1) ;
00218       $lng2 
strlen($seq2) ;
00219       $lngc 
max($lng1,$lng2) ;
00220     
00221       # complétion éventuelle des chaines
00222     
00223       $idc 
$lng1 ;
00224       while ($idc
<=$lngc) { $seq1 .= " " $idc++ ; } ;
00225       $idc 
$lng2 ;
00226       while ($idc
<=$lngc) { $seq2 .= " " $idc++ ; } ;
00227     
00228     # print " chaine 1 : * $seq1 * \n" ;
00229     # print " chaine 2 : * $seq2 * \n" ;
00230     
00231       # comptage du nombre de différences
00232     
00233       $idc 
;
00234       $ndi 
;
00235       while ($idc
<$lngc) {
00236         $car1 
substr($seq1,$idc,1) ;
00237         $car2 
substr($seq2,$idc,1) ;
00238         if ($car1 
!= $car2) { $ndi++ ; } ;
00239         $idc
++ ;
00240       } ; # fin tant que
00241     # print " soit $ndi différences \n" ;
00242       return 
$ndi ;
00243     
00244     } ; # fin de fonction nbdif
00245     
00246     ###########################################################
00247     ###########################################################
00248     
00249     
00250     ?>

La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file

mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)