[Javascript] Fonction de tronquage

Résolu/Fermé
Arkha - 2 juil. 2009 à 11:50
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 - 2 juil. 2009 à 17:13
Bonjour,
j'ai créé une fonction de tronquage par des "..." pour que le texte affiché ne soit pas trop volumineux

le script:

if (val.length > 7) {
   val = val.substr(0,7)+"...";
}
document.getElementById('id').innerHTML = val;

//si la valeur de val est "aaaaaaaaaaaaaaaaaaa" elle sera remplacée par "aaaaaaa..."


Jusque là tout vas bien, mais le problème est que j'aimerai que cette fonction, prenne en compte les balises HTML de cette façon:
exemple:


"123<strong>4567</strong>89" deviendra "1234567..."


au lieu de :


"123<str..."


Avez vous une idée pour m'éclairer?

Merci d'avance.
A voir également:

10 réponses

nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
2 juil. 2009 à 13:14
ça va c'est pas encore trop compliqué
s'il te manque quelque chose n'hésite pas

function t(s,n){for(var i=0;n&&i<s.length;n--,i++)while(s.charAt(i)=='<')i=s.indexOf('>',i)+1;return i<s.length?s.slice(0,i)+'...':s}


et tu l'appelle comme ça, la fonction, par exemple si tu ne veux que 6 caractères :
 t('123<strong>45</strong>6789', 6)


edit :
j'y pense ça prend pas en compte les balise html mais tout simplement tout ce qui commence par < et termine par >
ça pose problème ?
1
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
2 juil. 2009 à 11:55
bonjour

j'ai une petite idée ^^

tu fais une fonction qui compte les caractères entre <> tu ajoute 2 pour <> et tu augment la fonction qui tronque :)

enfin c'est juste une idée comme ca car si entre <> il y a pas une balise html ca sera ecrit

Adns
ps: pas super de pouvoir écrire du html quand même....
0
Merci adns

J'ai déjà essayé dans cette voie là, mais il faut vraiment que la balise soit prise en compte dans l'affichage final. Je ne sais donc pas comment réafficher les balises au bon endroit après avoir tronqué le texte "brut" :/

Pour la recopie de balise, t'en fais pas, j'ai en sorte que se soit sécurisé :)
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
2 juil. 2009 à 12:22
oki ...

bah a pars parser pour recup les données affichéés je vois pas trop :S

Adns
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
2 juil. 2009 à 12:28
ou peut être recupe le texte dans des variable une variable par tranche de texte ex

123<b>456</b>789
v1 = 123
v2= <b>
v3= 456
v4 = </b>
v5=789

vérification de quelle variable est du texte ou une balise

tu concatène les variables text
tu tronque
et apres tu fais un replace
tu concatene premiere varivable balise avec les 2 suivante et tu remplace ;)

je sais pas si réellement faisable mais ca peux marcher....


Adns
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
2 juil. 2009 à 13:28
Bah je pense que ca va lui poser probleme

si le mec veux foutre du html mais qui se trompe le contenu des balises s'affichera

Adns
0
Merci beaucoup adns et nEm3sis,

nEm3sis c'est en effet ce que je cherchais à faire
après quelques petites modifications se sera top!
0
nEm3sis,

Je suis un peu désolé de te demander ça, mais connais-tu l'équivalent de la fonction que tu viens de m'écrire en php?

Grand merci...
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
2 juil. 2009 à 16:44
oui voila je viens de te traduire la fonction en php
elle fonctionne pareil

<?php
function t($s,$n){
	for($i=0;$n&&$i<strlen($s);$n--,$i++)
		while($s[$i]=='<')
			$i=strpos($s,'>',$i)+1;
	return ($i<strlen($s))?substr($s,0,$i).'...':$s;
}
?>
0
Grand merci,
ça fonctionne impec :)
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
2 juil. 2009 à 17:13
ravi de t'avoir aidé =)
0