par
Lexarino_ » 29 nov. 2005, 13:02
bon j'ai fini par bidouiller mon propre script, je me suis dit que j'allais venir vous le présenter, je pense que ça peut aider :
en fait il faut préformater son texte avec par exemple {cut} là où on veut couper et {fin} pour la fin.
Après on opère chirurgicalement avec les fonctions :
strpos() qui va chercher la position des caractères {cut} et {fin}
et puis substr_replace() qui va servir à effacer tout ce qui doit être couper pour afficher qu'une portion de la chaine de texte...
Voilà l'exemple :
Admettons une page php qui affiche un article depuis une base de données, qu'on nommera page.php :
// Recherche la position de l'information {cut} et ajoute 5 pour la conservée.
if (empty($HTTP_GET_VARS['$cut'])) {
$source = "Texte à couper {cut} parce que trop long {cut2} bien trop long{fin}" ;
$pos = strpos($source, "{cut}") ;
$pos = ($pos +5) ;
// 1-cherche la position de {fin}.
$pos_fin = strpos($source, "{fin}") ;
// 2-calcul l'écart entre le {cut} et le {fin}.
$calcul = (($pos_fin +5) - $pos) ;
// 3-conserve tout ce qui se trouve jusqu'à {cut} et supprime tout ce qui suit.
$source_coupee = substr_replace($source, '', $pos, $calcul) ;
}
Après : on remplace l'information {cut} par un lien "afficher la suite".
$affichage = str_replace("{cut}", "<p><strong><a href='page.php?id={x}&cut=1'>Lire la suite</a></strong><p>", $source_coupee) ;
Puis pour afficher la suite, il faut couper le texte précédent le {cut} et garder celui qui vient ensuite :
C'est pour cela que dans le lien plus haut, on introduit la variable $cut qui permet de savoir où en est la lecture.
On introduit alors le code suivant sous le premier bloc de cet exemple :
// On vérifie où en est la lecture :
if ($HTTP_GET_VARS['$cut'] == "1") {
$source = "Texte à couper {cut} parce que trop long {cut2} bien trop long{fin}" ;
$pos = strpos($source, "{cut}") ;
$pos = ($pos +5) ;
// 1- On supprime tout ce qu'il y a avant le {cut}
$source_coupee = substr_replace($source, '', 0, $pos) ;
//on cherche la position du {cut2} et cette fois : on ajoutte 6 pour le supprimer.
$pos2 = strpos($source_coupee, "{cut2}") ;
$pos2 = ($pos2 +6) ;
//on cherche une nouvelle fois la position de {fin} qui depuis la coupure juste au dessus, n'est plus la même que la fois d'avant.
$pos_fin = strpos($source_coupee, "{fin}") ;
//on calcule la distance entre le {cut} et la {fin} pour supprimer tous les caractères qui s'y trouvent :
$calcul = (($pos_fin +5) - $pos2) ;
//2- On supprime enfin le reste de la chaine calculée juste avant.
$source_coupee = substr_replace($source_coupee, '', $pos2, $calcul) ;
}
Voilà, je vous laisse deviné comment rédiger le code pour la dernière page du {cut2} à {fin}
Je sais pas si c'est le code le plus pratique, en tout cas ça évite d'avoir à couper son article en plein d'entrées dans la base puis ensuite jongler entre les enregistrement... surtout pour les mises à jour.
On peut aussi imaginer un script qui vient mettre les infos {cut_n} et {fin} de façon automatique, tous les X caractères... mais bon je trouve que c'est plus intéressant quand même de choisir manuellement où on veut couper son article : ça permet de jouer avec le suspens du visiteur...
...oui oui un peu comme les pubs sur TF1

bon j'ai fini par bidouiller mon propre script, je me suis dit que j'allais venir vous le présenter, je pense que ça peut aider :
en fait il faut préformater son texte avec par exemple {cut} là où on veut couper et {fin} pour la fin.
Après on opère chirurgicalement avec les fonctions :
strpos() qui va chercher la position des caractères {cut} et {fin}
et puis substr_replace() qui va servir à effacer tout ce qui doit être couper pour afficher qu'une portion de la chaine de texte...
Voilà l'exemple :
Admettons une page php qui affiche un article depuis une base de données, qu'on nommera page.php :
[php]// Recherche la position de l'information {cut} et ajoute 5 pour la conservée.
if (empty($HTTP_GET_VARS['$cut'])) {
$source = "Texte à couper {cut} parce que trop long {cut2} bien trop long{fin}" ;
$pos = strpos($source, "{cut}") ;
$pos = ($pos +5) ;
// 1-cherche la position de {fin}.
$pos_fin = strpos($source, "{fin}") ;
// 2-calcul l'écart entre le {cut} et le {fin}.
$calcul = (($pos_fin +5) - $pos) ;
// 3-conserve tout ce qui se trouve jusqu'à {cut} et supprime tout ce qui suit.
$source_coupee = substr_replace($source, '', $pos, $calcul) ;
}[/php]
Après : on remplace l'information {cut} par un lien "afficher la suite".
[php]$affichage = str_replace("{cut}", "<p><strong><a href='page.php?id={x}&cut=1'>Lire la suite</a></strong><p>", $source_coupee) ;[/php]
Puis pour afficher la suite, il faut couper le texte précédent le {cut} et garder celui qui vient ensuite :
C'est pour cela que dans le lien plus haut, on introduit la variable $cut qui permet de savoir où en est la lecture.
On introduit alors le code suivant sous le premier bloc de cet exemple :
[php]// On vérifie où en est la lecture :
if ($HTTP_GET_VARS['$cut'] == "1") {
$source = "Texte à couper {cut} parce que trop long {cut2} bien trop long{fin}" ;
$pos = strpos($source, "{cut}") ;
$pos = ($pos +5) ;
// 1- On supprime tout ce qu'il y a avant le {cut}
$source_coupee = substr_replace($source, '', 0, $pos) ;
//on cherche la position du {cut2} et cette fois : on ajoutte 6 pour le supprimer.
$pos2 = strpos($source_coupee, "{cut2}") ;
$pos2 = ($pos2 +6) ;
//on cherche une nouvelle fois la position de {fin} qui depuis la coupure juste au dessus, n'est plus la même que la fois d'avant.
$pos_fin = strpos($source_coupee, "{fin}") ;
//on calcule la distance entre le {cut} et la {fin} pour supprimer tous les caractères qui s'y trouvent :
$calcul = (($pos_fin +5) - $pos2) ;
//2- On supprime enfin le reste de la chaine calculée juste avant.
$source_coupee = substr_replace($source_coupee, '', $pos2, $calcul) ;
}[/php]
Voilà, je vous laisse deviné comment rédiger le code pour la dernière page du {cut2} à {fin}
Je sais pas si c'est le code le plus pratique, en tout cas ça évite d'avoir à couper son article en plein d'entrées dans la base puis ensuite jongler entre les enregistrement... surtout pour les mises à jour.
On peut aussi imaginer un script qui vient mettre les infos {cut_n} et {fin} de façon automatique, tous les X caractères... mais bon je trouve que c'est plus intéressant quand même de choisir manuellement où on veut couper son article : ça permet de jouer avec le suspens du visiteur...
...oui oui un peu comme les pubs sur TF1 :)