begin process at 2012 05 27 18:13:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > RACCOURCIR UNE CHAINE AVEC UN SÉPARATEUR AU MILIEU

RACCOURCIR UNE CHAINE AVEC UN SÉPARATEUR AU MILIEU


 Information sur la source

Note :
5,5 / 10 - par 4 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :chaine, raccourcir, séparateur, remplacer, milieu Niveau :Débutant Date de création :25/10/2005 Date de mise à jour :26/10/2005 18:09:04 Vu :7 175

Auteur : porciner

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Vous avec une chaine de ce type :

J'aime le PHP et j'espère que ma modeste source vous plaira

Le passage vers la fonction donne :

J'aime le PHP et...vous plaira

Source

  • function shortenStr($str, $max, $sep = '.', $width = 3)
  • {
  • $nb = strlen($str); // Nombre de caractères
  • if ($nb > $max)
  • {
  • $p = $nb - $max + $width; // Nombre de caractères en trop
  • if ($max < $width) // Dans le cas où la largeur max est inférieur à la largeur du séparateur
  • {
  • $width = $max;
  • }
  • $start = ceil($nb / 2 - $p / 2);
  • return substr($str, 0, $start) . str_repeat($sep, $width) . substr($str, floor($start + $p));
  • // début de la chaine séparateur du milieu fin de la chaine
  • }
  • return $str;
  • }
  • $chaine = 'J\'aime le PHP et j\'espère que ma modeste source vous plaira';
  • echo shortenStr($chaine, 30);
  • // J'aime le PHP et...vous plaira
function shortenStr($str, $max, $sep = '.', $width = 3)
{
	$nb = strlen($str); // Nombre de caractères
	
	if ($nb > $max)
	{		
		$p = $nb - $max + $width; // Nombre de caractères en trop
		
		if ($max < $width) // Dans le cas où la largeur max est inférieur à la largeur du séparateur
		{
			$width = $max;
		}
		
		$start = ceil($nb / 2 - $p / 2);
		
		return substr($str, 0, $start) . str_repeat($sep, $width) . substr($str, floor($start + $p));
		//       début de la chaine        séparateur du milieu            fin de la chaine
	}
	return $str;
}

$chaine = 'J\'aime le PHP et j\'espère que ma modeste source vous plaira';

echo shortenStr($chaine, 30);

// J'aime le PHP et...vous plaira

 Conclusion

Vos remarques et critiques sont les bienvenus !


 Historique

26 octobre 2005 11:46:19 :
J'ai corrigé la function en retirant la boucle inutile, n'hésitez pas à suggérer les améliorations !
26 octobre 2005 11:49:09 :
Vérification que le nombre de caractères dépasse bien max.
26 octobre 2005 11:51:34 :
Oups petit oubli.
26 octobre 2005 12:14:14 :
Mise en ordre des variables.
26 octobre 2005 18:09:04 :
Petite erreur...

 Sources du même auteur

CLASSE : COMPTEUR DE VISITEURS CONNECTÉS AU SITE
RENVOI UN DOSSIER DE NOM UNIQUE ET ALÉATOIRE
FONCTION QUI ESSAIE DE RETOURNER UNE DATE VALIDE COMME ELLE ...
MOTS TROP LONGS

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip CLASSE POUR RÉCUPÉRER UNE PORTION DE TEXTE HTML EN GARDANT L... par kirk57
SÉCURISATION DE FORMULAIRE par ultimacsplayer
FONCTION POUR UTILISER BIT.LY par Rem974
REMPLACER DES LETTRES EN IMAGES par Damtux972
OPTIMISATION DE CHAINE POUR RÉÉCRITURE D'URL par crocxx2

Commentaires et avis

Commentaire de FhX le 25/10/2005 23:19:22

Pas mal du tout :)

Commentaire de MATHIS49 le 25/10/2005 23:32:51

sympa ;) j'aime bien ces petits bouts de code bien utiles ;) 7/10

Commentaire de ttestt123123 le 26/10/2005 08:34:49

Euhhh, tu te prends pas un peu la tête pour rien là ?
Ca serait pas plus simple de tester si la chaine n'est pas déjà aussi longue que max, et sinon :

1- déterminer le nombre de caractères à droite/gauche (nb)
2- chaine de retour = substr du début (nb) + séparateur + substr de fin (nb)

avec séparateur en dur, ne connaissant eprsonnellement pas d'autre caractère connu pour signifier "etc" dans une phrase, à part peut-être "[...]"

Ton code est beaucoup trop long pour si peu

Commentaire de garfield90 le 26/10/2005 09:37:44

perso, je ferai ca par une expression regulière :

shortenString($string, $max,$rempl){
  $len = strlen($string);
  if ( $len > $max ){
     return preg_replace('#(.{15})(.*)(.{10})#','$1'.$rempl.'$2',$str);
  }
}

a tester, perso je trouve ca plus simple et plus propre

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

cherche a faire du remplacement de texte [ par kimmelf2 ] voila, je suis en train de bosser sur un site et j'ai besoin de faire une gestion de modeles, c'est a dire proposer plusieurs mises en pages, avec des Remplacer UNE SEULE OCCURENCE dans une chaine [ par p0236 ] Bonjour à tous !!! Je voulais savoir on pouvait remplacer un SEULE OCCURENCE dans un chaine EXEMPLE : chaine de départ : PHP PHP PHP PHP PHP PHP AS Remplacer une SEULE OCCURENCE dans un chaine [ par p0236 ] Bonjour à tous !!! Je voulais savoir on pouvait remplacer une SEULE OCCURENCE dans un chaine EXEMPLE : chaine de départ : PHP PHP PHP PHP PHP PHP A remplacer une chaine de caractère dans un fichier [ par Capitaine Iron ] j'ai un fichier texte qui est structuré de la facon suivante :&lt;deb&gt;le message&lt;fin&gt;plein de commmentaires ici.....&lt;deb&gt;le message&lt; Remplacer par RegExp l'évaluation d'une operation arithmétique [ par guill76 ] Salut, Je bute sur un problème :je parse une chaine de type équation mathématique ex (3x+(5*2) +3X3 +3X2) avec eregi_replace pour remplacer dans 1 pre remplacer les ? et ponctuation ainsi que les espaces dans une chaine de caractère [ par loupile ] Bonjour j'ai une chaine de caractère qui est du type ...$chaine = 'bien choisir son pc ?';dans cette chaine je voudrais supprimer les ponctuations :  Comment ne garder que certains caractères d'une chaine ? [ par Gta3soluce ] Bonjour,J'utilise la fonction str_replace pour remplacer certains caractère contenu dans une chaine par d'autres.J'aimerais faire le contraire.  C'est remplacer un ' par un \' [ par Noizet ] Hello,J'ai une chaine de caractère qui contient un ', et je dois remplacer l'apostrophe par un \', $chaine = strtr($chaine , "'" , "\'");le problème e Chaine de caractères [ par seyvapul ] Bonjour, je souhaite remplacer tous les caractères spéciaux de mes chaines de caractères par leur valeur &arg : exemple, remplacer 'é' par '&eacute', remplacer une toutes les occurences d'une variable dans une chaine de caractere [ par angellestat ] Bonjour à tous, Je suis entrain de développer un petit forum sur un site. Il propose des zones de commentaire dans lesquelles les utilisateurs peuvent


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales