PHP preg_replace
Résolu/Fermé
graphh
Messages postés
37
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 juillet 2011
-
15 avril 2010 à 15:06
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 16 avril 2010 à 09:52
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 16 avril 2010 à 09:52
3 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
Modifié par kij_82 le 15/04/2010 à 17:24
Modifié par kij_82 le 15/04/2010 à 17:24
Bonjour,
Je ne vois pas où est le problème avec la fonction substr. Il suffit de passer:
- argument 1 : ta chaine de caractère
- argument 2 : index de départ de la coupure
- argument 3 : taille de texte à découper depuis l'index de départ
Du moins je trouve son utilisation plus simple que ce que tu as utilisé (désolé si je n'y fais pas plus référence, ça reste obscure pour moi les expressions régulières, tant que je n'en ai pas la réelle utilité ^^)
Pour l'utiliser, reste donc à faire ceci:
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
Je ne vois pas où est le problème avec la fonction substr. Il suffit de passer:
- argument 1 : ta chaine de caractère
- argument 2 : index de départ de la coupure
- argument 3 : taille de texte à découper depuis l'index de départ
Du moins je trouve son utilisation plus simple que ce que tu as utilisé (désolé si je n'y fais pas plus référence, ça reste obscure pour moi les expressions régulières, tant que je n'en ai pas la réelle utilité ^^)
Pour l'utiliser, reste donc à faire ceci:
$nbCar = 25; $chaine = "coucou, ceci est un test de coupure via la fonction substr sur une chaine de caractère longue"; $cut_str = $chaine; if ( sizeof($cut_str) > $nbCar ){ $cut_str = substr($chaine,0,$nbCar)."..."; } echo $cut_str;
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
graphh
Messages postés
37
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 juillet 2011
1
15 avril 2010 à 17:39
15 avril 2010 à 17:39
Merci de la réponse.
$nbCar = 15;
$chaine = $donnees['titre'];
$cut_str = $chaine;
if ( sizeof($cut_str) > $nbCar )
{
$cut_str = substr($chaine,0,$nbCar)."...";
}
echo $cut_str;
Ca donnerait ca dans mon code. Je n'ai certe plus d'erreur, mais ca ne coupe pas mon "titre" :/
Quelle est l'utilité du ,0, dans le substr?
Merci
$nbCar = 15;
$chaine = $donnees['titre'];
$cut_str = $chaine;
if ( sizeof($cut_str) > $nbCar )
{
$cut_str = substr($chaine,0,$nbCar)."...";
}
echo $cut_str;
Ca donnerait ca dans mon code. Je n'ai certe plus d'erreur, mais ca ne coupe pas mon "titre" :/
Quelle est l'utilité du ,0, dans le substr?
Merci
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
Modifié par kij_82 le 15/04/2010 à 18:05
Modifié par kij_82 le 15/04/2010 à 18:05
$nbCar = 15; $cut_str = $donnees['titre']; if ( sizeof($cut_str) > $nbCar ) { $cut_str = substr($cut_str,0,$nbCar)."..."; } echo $cut_str;
J'ai corrigé, j'avais fais une petite faute.
Le '0' est l'index de départ, là où la fonction substr doit commencer la "sous chaine".
Donc l'instruction : substr("blablabla",0,5) devrait renvoyer les 5 premiers caractères de 'blablabla'.
Je n'ai pas tester ce que je t'ai mis, mais logiquement ça devrait donner le résultat. Si ce n'est pas le cas ce n'est pas normal (fais le moi savoir et je jetterai un oeil demain)
Si ça ne marche pas, es-tu sûr que le titre fais plus de 15 caractères ? Le script coupe uniquement et ajouter les "..." uniquement si le titre dépasse la taille maximum autorisée.
Pourras-tu afficher la taille du titre juste en guise de traces : echo sizeof($donnees["titre"])
graphh
Messages postés
37
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 juillet 2011
1
16 avril 2010 à 00:09
16 avril 2010 à 00:09
$nbCar = 25;
$cut_str = $donnees['titre'];
if (strlen($cut_str) > 25)
{
echo ''.substr($cut_str, 0, 25).'... ';
}
else
{
echo ''.$cut_str.' ';
}
Voici le script qui fonctionne :)
Merci pour le coup de main!
$cut_str = $donnees['titre'];
if (strlen($cut_str) > 25)
{
echo ''.substr($cut_str, 0, 25).'... ';
}
else
{
echo ''.$cut_str.' ';
}
Voici le script qui fonctionne :)
Merci pour le coup de main!
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
16 avril 2010 à 09:52
16 avril 2010 à 09:52
Ha ok, c'est l'utilisation de strlen dans la condition qui fait que ça fonctionne, effectivement :)