Garniture de texte à 340 caractères
Je suis en tirant les messages de blog à partir d'une base. Je veux découper le texte d'une longueur maximale de 340 caractères.
Si le blog est plus de 340 caractères que je veux découper le texte pour le dernier mot et ajouter " ... " à la fin.
E.g.
NOT: In the begin....
BUT: In the ...
Qu'aimeriez-vous faire si l'utilisateur entre un mot avec la longueur 341 caractères (sans espaces dans le post)?
OriginalL'auteur CLiown | 2010-01-20
Vous devez vous connecter pour publier un commentaire.
Autres réponses vous montrer comment vous pouvez rendre le texte environ 340 caractères. Si c'est bien fait pour vous, puis utilisez l'une des autres réponses.
Mais si vous voulez un très strict maximum de 340 caractères, les autres réponses ne fonctionne pas. Vous devez vous rappeler que l'ajout de la
'...'
peut augmenter la longueur de la chaîne et vous devez en tenir compte.Notez aussi que ici, je suis en utilisant la surcharge de
strrpos
qui prend un offset pour démarrer la recherche directement à partir de l'emplacement correct de la chaîne, plutôt que d'abord le raccourcissement de la chaîne.Voir en ligne: ideone
$.='...'
être plus facile à la place de la dernière étape ?Merci pour votre commentaire. J'ai fait quelques améliorations à ma réponse.
Cool, assez vieux thread mais je suis sûr que ça va encore être utile pour beaucoup de gens!
Il convient de noter que ce produit, mais rien de "..." si il n'y a pas d'espaces dans le texte
Génial! Cela a aidé beaucoup de choses.. Merci
OriginalL'auteur Mark Byers
Il semble que vous voulez d'abord découper le texte en bas à 340 caractères exactement, puis de trouver l'emplacement de la dernière ' dans la chaîne et de l'assiette à ce montant. Comme ceci:
OriginalL'auteur Nicholas Flynt
Si vous avez l'extension mbstring activée (ce qui est sur la plupart des serveurs de nos jours), vous pouvez utiliser le mb_strimwidth fonction.
Assez surpris de voir pourquoi ce n'est pas upvoted le plus. Solution élégante..
OriginalL'auteur onokazu
essayer:
.
ne correspond pas à des sauts de ligne. Alors, quand il y a des sauts de ligne avant le 340e caractère, il ne fonctionnera pas. L'ajout d'uns
modificateur à la fin fera l'affaire.OriginalL'auteur John Conde
J'ai mis la réponse de Jean-Conde dans une méthode:
Exemples:
OriginalL'auteur Sebastian Hojas
vous pouvez essayer d'utiliser des fonctions qui vient avec PHP , comme wordwrap
OriginalL'auteur ghostdog74
fonction trim_characters( $texte, $longueur = 340 ) {
}
Utiliser cette fonction trim_characters() pour découpe une chaîne de mots pour un nombre spécifié de caractères, gracieusement en s'arrêtant à des espaces blancs.
Je pense que c'est utile pour vous.
OriginalL'auteur sjkon
Pourquoi de cette façon?
Réelle regex solution est très simple:
Complète de la méthode en PHP pourrait ressembler à ceci:
Plus d'explication:
$shownLength
est de garder très stricte limite (comme la Marque Byers mentionné)\w\b
partie est pour éviter les espaces ou interpunction à la fin (voir 1 ci-dessous)In the ...
est décrit comme souhaité, je me sensIn the...
est plus lisse (n'aime pasIn the,...
etc.)OriginalL'auteur D. Cichowski
Solution la plus simple
Pour multi-octets de texte
Pourriez-vous s'il vous plaît partager le texte qui doit être coupé? Afin que je puisse vérifier ma solution..
Assurez-vous. Essayez ceci et les couper dans le Ü: "UTIL de CONTRÔLE de la DISTRIBUCION AMARRE CIGÜEÑAL". Lettre 40 pour moi.
Merci pour le string & Si vous voulez garniture multi-octets texte s'il vous plaît utiliser les mb_substr et je suis à jour de ma réponse, pour le caractère spécial aussi
OriginalL'auteur rahul sharma