begin process at 2012 02 11 18:19:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > COUPER UNE CHAINE SANS COUPER LES MOTS ET SANS DÉPASSER LES LIGNES

COUPER UNE CHAINE SANS COUPER LES MOTS ET SANS DÉPASSER LES LIGNES


 Description

d'accord, je vous l'accorde on a déja vu pas mal de fois ce code sur phpcs...Erreur... on a déja vu pas mal de fois des fonctions qui ressemble à ce bout de code qui font à peu de choses près la même chose mais pas tout à fait...

alros voila mon code coupe une chaine sans couper les mots... sauf que, au contraire de toutes les autres fonctions vues ici, elle s'arrête au dernier caractère espace avant la longueur limite (et non après)...

Source

  • function cutStr($str)
  • if(strlen($str)>$limite){
  • $tStr = split(" ",$str);
  • $j=0;
  • $str1="";
  • $str2="";
  • $i = strlen($str1+$tStr[$j])+1;
  • while($i<$limite){
  • $str1 = $str1." ".$tStr[$j];
  • $j++;
  • $i = strlen($str1)+strlen($tStr[$j])+1;
  • }
  • $str2 = substr($str,strlen($str1),strlen($str)-strlen($str1));
  • echo '<tr>';
  • echo trim($str1)."<br>";
  • echo trim($str2);
  • }
  • else{
  • echo $str2;
  • }
  • }
function cutStr($str)					
	if(strlen($str)>$limite){
		$tStr = split(" ",$str);
		$j=0;
		
		$str1="";
		$str2="";
		$i = strlen($str1+$tStr[$j])+1;
		
		while($i<$limite){
			$str1 = $str1." ".$tStr[$j];
			$j++;
			$i = strlen($str1)+strlen($tStr[$j])+1;
		}
		
		$str2 = substr($str,strlen($str1),strlen($str)-strlen($str1));
	
		echo '<tr>';
		echo trim($str1)."<br>";
		echo trim($str2);
	}
	else{
		echo $str2;
	}
}

 Conclusion

voila bon ça n'a rien d'exceptionnelle...

mais bon ça fait un bout de temps que je fais du php et je n'avais encore jamais poster de source (encore jamais qqch d'inédit...)


 Sources du même auteur

Source avec Zip "WORDART" POUR FORUM

 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

Commentaires et avis

Commentaire de GRenard le 18/02/2005 18:08:20

Euh, tu pourrais pas faire ta fonction pour qu'elle RETOURNE cette la valeur recherchée... ca srait beaucoup plus utile...
et c'est quoi ce <tr> qui traine :P ?

Commentaire de GRenard le 18/02/2005 18:08:47

Oh et la limite? elle est ou ?

Commentaire de Anthomicro le 18/02/2005 18:21:45

Salut,

le problème est que justement si ça ne coupe pas un mot bah tu peux très bien déformer tout un site...

Utilise la fonction wordwrap() sinon, c'est beaucoup plus rapide et plus simple d'utilisation.

a ++

Commentaire de fuckya le 18/02/2005 19:47:24

Tu pourrais eventuellement vérifier que ton code marche bien avant de poster ;)

function y'a un { apres ;)

Commentaire de coockiesch le 18/02/2005 23:09:10

Salut!
J'aime pas trop l'idée d'avoir une fonction comme strlen dans une boucle... D'ailleurs, pit être tout simplement trop de strlen...

@++

R@f

Commentaire de Kirua le 19/02/2005 13:22:56

"strlen($str1+$tStr[$j])+1;"

je sais pas ce que c'est le +, mais j'imagine que ça fait office de concaténation (ça me paraît bizarre qd même, j'ai peut-être mal compris le code). quoi qu'il en soit, tu ne dois pas faire:

strlen($str1 . $str2)

mais bien:

strlen($str1) + strlen($str2)

parce que dans le premier cas, tu concatènes les chaînes (long et lourd) et ensuite tu en calcules la longueur (ce qui a déjà dû être fait de manière cachée par la concaténation, c'est du gachis). la seconde version au contraire se contente de calculer la longueur des deux chaînes séparément, ce qui est équivalent mais bcp plus rapide.

au passage, t'as pas l'air de t'en rendre compte, mais appeler strlen c'est lourd comme opération (si du moins c'est, comme je le pense, le même procédé qu'en C). faudrait optimiser ça;

ensuite, pour avoir écrit ce genre de code en C++, t'as tout intérêt à parser toi-même le texte, caractère après caractère; c'est plus chiant à écrire comme code, plus long, moins élégant; mais nettement plus rapide parce que tu optimises directement.

Commentaire de FreakDev le 20/02/2005 11:18:48

Anthomicro :
certe tu peux totalement déformer un site. Encore que avec ma solution tu risque moins de déformer un site que quand la chaine est coupée au premier caractère espace après la limite
mais de toutes façon j'utilise ceci dans le cas d'un générateur de pdf en php
tout dépend donc de l'utilisation que l'on en fait...

fuckya :
dsl pour cette maladresse, je n'est pas ce souci du détail...
mais bon même pour un débutant je pense que l'erreur renvoyer pour ce genre de faute est "expected '{' at row 2"... bon ça va CT pas trop dur à débugger... ;)
mais j'aurais pu faire gaffe quand même...j'avoue...

coockiesch :
$str2 = substr($str,strlen($str1),strlen($str)-strlen($str1));
C vrai que pour cette ligne G un peu abusé quand même...
mais dans la boucle je n'ai pas trop le choix, y'en a un que je peux virer mais pas les deux, sinon ça change le principe de mon algo (ce qui a des fin d'optimisation devrait peut-être être fait... mais bon...)


Kirua :
strlen($str1+$tStr[$j])+1;
exacte il y a un petit pb ici...
je sais que les fonctions sur les chaines sont pour la plupart loude et longues à éxécuter... mais je ne suis pas un fanatique de l'optimisation en temps d'éxécution mais plutot en temps de réflexion...
disons que je suis un féniant koi... ;)

sur ce, bon coding à tous !!

Commentaire de fuckya le 20/02/2005 12:44:45

C'est pas grave ^^ mais si j'ai bien compris, ta fonction découpe chaque mot et l'affiche ?

Commentaire de GRenard le 20/02/2005 15:24:09

Pourquoi tu ne corriges pas toi même ??

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,530 sec (4)

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