Fonctions spéciales annuairistes

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Fonctions spéciales annuairistes

Message le Lun Fév 01, 2010 14:24

Bonjour,

je voulais partager 2 fonctions spéciale annuaire, la premiere corrige la ponctuation d'une description et la seconde c'est une stipslashe spéciale url

voici ce que fait la correction de ponctuation:

- met un espace après un point, une points virgule... et une majuscule au mot qui suit le point
- met une espace après une virgule
- met une majucule au début du texte
- enleve les espaces en début et fin de chaine

Les +++

- n'affecte pas les 3 ou série de 2 points (...)
- n'affecte pas les smileys
- n'affecte pas les série de signes ?!?!?
- n'affecte pas les cotes simples et doubles ' et "
- n'affecte pas le HTML
- n'affecte pas les URLs (car la correction n'est pas lancé)
- n'affecte pas les adresses emails (car la correction n'est pas lancé)
- n'affecte pas les N° de tél : 01.04.01...
- n'affecte pas les nombres 0.10...


Code: Tout sélectionner
<?php
function corrige_ponctuation($chaine) {

/*****************************************************************************/
/* initialisation                                                            */
/*****************************************************************************/


  $signes = array(".","!","?",",",":",";");
  $signes_connexe = array('"',")",">","'");
  $i=0;
  $taille_chaine = strlen( $chaine );

  $masque_url  = '#';
  $masque_url .= '([http|ftp|https]+://';
  $masque_url .= '[www\.]?';
  $masque_url .= '[\.\-a-zA-Z0-9]*';
  $masque_url .= '[a-zA-Z]{2,4}?';
  $masque_url .= '[\?/\=\&\-_.a-zA-Z0-9]+?';
  // si vous avez + de repertoires a analyser, ajouter + de lignes
  // comme la ligne modele ci dessous :
  $masque_url .= '[\?/\=\&\-_.a-zA-Z0-9]+?';
  // fin ligne modele
  $masque_url .= '[\?/\=\&\-_.a-zA-Z0-9]+)';
  $masque_url .= '#i';
  // FIN MASQUE

  $masque_email  = '#';
  $masque_email .= "[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*";
  $masque_email .= "@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})+";
  $masque_email .= '#';

/*****************************************************************************/
/* Si 1 url ou 1 adresse email est dans le texte, la correction est arreter  */
/*****************************************************************************/

if (!preg_match_all($masque_url,$chaine,$match_1) and
    !preg_match_all($masque_email,$chaine,$match_2)
   )
{
/*****************************************************************************/
/* debut de la correction                                                    */
/*****************************************************************************/

  while ( $i < $taille_chaine )
    {
    // met la premiere lettre du texte en majuscule
    if ($i==0) $chaine[$i] = strtoupper($chaine[$i]);
    // capture la chaine deja analysée
    $capture .= $chaine[$i];


/*****************************************************************************/
/* correction de la ponctuation                                              */
/*****************************************************************************/

      // si le caractere fait partie des signes
      // si le caractere suivant n'est pas un espace
      // si le caractere suivant n'est pas un numérique
      // si le caractere précedent n'est pas un numérique
      // si on n'est pas en fin de chaine
      // n'affecte pas les 3 ou série de 2 points (...)
      // n'affecte pas les smileys ;) ou :)
      // n'affecte pas les série de signes ?!?!?
      // n'affecte pas les guillemets simples et doubles ' et "

      if( in_array($chaine[$i],$signes )
               and $chaine[$i+1] != ' '
               and !is_numeric( $chaine[$i+1] )
               and !is_numeric( $chaine[$i-1] )
               and ($chaine[$i+1] < $taille_chaine)
               and ($chaine[$i+1] != '.')
               and ($chaine[$i+1] != in_array($chaine[$i+1],$signes ))
               and ($chaine[$i+1] != in_array($chaine[$i+1],$signes_connexe ))
                                       )
       {
        $capture_trans = $capture.' ';
        // insere le point + 1 espace
        $chaine = str_replace( $capture, $capture_trans, $chaine );

        // met la lettre en majuscule si on ne traite pas une virgule
        if($chaine[$i] != ',')
        $chaine[$i+2] = strtoupper($chaine[$i+2]);
       }

/*****************************************************************************/
/* met une majuscule apres un signe                                          */
/*****************************************************************************/
     if (in_array($chaine[$i],$signes ) and ($chaine[$i+1] == ' ')
                                        and ($chaine[$i] != ',') )
      $chaine[$i+2] = strtoupper($chaine[$i+2]);

      $i++;
    }
    return trim($chaine);
   }
  }
/*****************************************************************************/
/* test                                                                      */
/*****************************************************************************/

// pour l'utiliser :

   echo corrige_ponctuation($texte);


?>



Le second code enleve les // dans les urls sans affecter les urls qui ont un protocole "http://" ou "http://s"

Code: Tout sélectionner
<?php
$url = 'http://www.site-exemple.com//rep1///rep2/';

function Strip_Slashes_Url($url) {

  $masque = array( '///', '//');
  $replace = array( '/', '/');
  if (substr($url,0,7) == "http://")
  $url = 'http://'.str_replace($masque,$replace,substr($url,7,strlen($url)));
  elseif (substr($url,0,8) == "https://")
  $url = 'https://'.str_replace($masque,$replace,substr($url,8,strlen($url)));
  else $url = str_replace($masque,$replace,$url);
  return $url;

}

// http://www.site-exemple.com/rep1/rep2/
echo Strip_Slashes_Url($url);

?>


reglisse
WRInaute passionné
WRInaute passionné
 
Messages: 1073
Inscription: 15 Nov 2005

Re: Fonctions spéciales annuairistes

Message le Lun Fév 01, 2010 14:45

étant donné qu'on en est à : relire, corriger les fautes d'orthographes, de syntaxe, voir même de réécrire les descriptions, alors quand il n'y a que les espaces oubliés je suis content.

passion
WRInaute accro
WRInaute accro
 
Messages: 3125
Inscription: 6 Jan 2006

Re: Fonctions spéciales annuairistes

Message le Lun Fév 01, 2010 15:00

merci de ce partage !


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Re: Fonctions spéciales annuairistes

Message le Lun Fév 01, 2010 16:16

reco


seb2310
WRInaute impliqué
WRInaute impliqué
 
Messages: 846
Inscription: 10 Oct 2006

Re: Fonctions spéciales annuairistes

Message le Lun Fév 01, 2010 16:41

Merci pour ces fonctions
+1 reco


nza2k
WRInaute impliqué
WRInaute impliqué
 
Messages: 771
Inscription: 16 Jan 2004

Re: Fonctions spéciales annuairistes

Message le Mar Fév 02, 2010 15:11

Merci beaucoup !

Reco :)


laurentg25
WRInaute discret
WRInaute discret
 
Messages: 235
Inscription: 22 Sep 2005

Re: Fonctions spéciales annuairistes

Message le Mer Fév 03, 2010 10:19

Merci de partager, +1 reco.

idefix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 319
Inscription: 17 Jan 2007

Re: Fonctions spéciales annuairistes

Message le Mar Fév 09, 2010 23:07

Une très bonne idée. Merci.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités