2010-08-18 5 views
2

J'ai du texte qui contient parfois de très longues chaînes de caractères, ce qui brise mon CSS.Comment réduire la longueur des très longues chaînes?

Voici un exemple:

http://iapps.smartphonesoft.com/php/software_details.php?id=358281487

alors que celui-ci est bien

http://iapps.smartphonesoft.com/php/software_details.php?id=380894729

Est-il possible de bande la très longue ligne de * s dans l'exemple ci-dessus jusqu'à une longueur gérable?

La complication supplémentaire est que ce n'est pas toujours * s qui cause le problème, c'est-à-dire dans cet exemple c'est la chaîne = qui cause le problème.

http://iapps.smartphonesoft.com/php/software_details.php?id=371255483

Je veux écrire PHP qui exécute la fonction si un seul « mot » dans $ description> = 30 caractères, rétrécir jusqu'à 30 caractères.

Tout le texte est maintenu dans la variable $ description

salutations,

Greg

+0

Ceci n'est pas spécifique à PHP5, merci d'étiqueter correctement. http://php.net/ChangeLog-5.php (peut vouloir accepter des réponses aussi) – TheLQ

+0

J'ai accepté une réponse environ 10 heures avant ce commentaire :) – kitenski

Répondre

4

Par défaut, les navigateurs ne seront pas envelopper un mot extrêmement long. Vous pouvez remplacer ce comportement et toujours envelopper, même si vous avez besoin de casser un mot, avec CSS (pas de PHP requis!)

La propriété est word-wrap: break-word; et fonctionne dans tous les navigateurs.

+0

merci, c'est une excellente solution qui a fonctionné :) – kitenski

+0

Pas de problème, heureux de vous aider. –

1

vous pouvez exploser chaîne à tableau de mots, puis vérifier strlen de chaque mot non> 30

comme

$words = explode(" ", $string); 
foreach($words as $k=>$word){ 
    if(strlen($word) >= 30) 
     $words[$k] = substr($word,0,30) ; 
} 

après ce tableau de retour à une chaîne avec

join(' ' ,$words); 
+0

Et concat avec
à la fin de chaque ligne. – Topera

+0

quelle est la longueur de la ligne? après combien de mots? –

+2

Le problème avec ceci est que (au moins avec les polices proportionnelles normales) différents caractères ont une largeur différente. Comme les longueurs de ligne ne sont pas si longues, vous ne pouvez pas compter sur la largeur moyenne des caractères pour égaliser la longueur totale de la ligne. C'est pourquoi l'emballage basé sur le nombre de caractères n'est pas très bon. –

Questions connexes