Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/11/2011, 22h22   #1
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Par défaut Couper texte html pour créer des pages

Bonsoir,

Je suis tombé sur la fonction http://j-reaux.developpez.com/tutori.../gestion-news/ qui permet de découper du texte en gardant les balises HTML

Imaginons un texte de 10000 caractères. Mon intention est de découper le texte tous les 1000 caractères.

J'aimerais savoir comment vous procéderiez pour découper les pages et insérer en base les différentes parties avec cette fonction.

Je pensais procéder un peu comme cela :

Code :
1
2
3
4
5
6
7
8
9
$total_caractere = strlen($texte);
$nombre_caractere_par_page = 1000;
 
$tour_boucle = ceil($total_caractere/$nombre_caractere_par_page);
 
for ($i = 1; $i <= $tour_boucle; $i++) {
 
 texte_resume($texte, $nombre_caractere_par_page);
}
Cependant, comment découper les 0 à 1000 premiers caractères puis les 1001 à 2000 caractères...

Par avance merci
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 10h03   #2
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
tu commets une petite erreur de raisonnement. Si tu prends les caractères de 0 à 1000, tu prends 1001 caractères puisque tu prends le zéro.
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h13   #3
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Effectivement, ce pourrait donc être de 0 à 999 puis 1000 à 1999.

Cependant, comment faire pour pratiquer cette coupure ?

Par avance, merci !
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 17h11   #4
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Tien, je ne sais pas pourquoi, mais j'ai eu envie de m'amuser un peu . On s'amuse comme on peut.
C'est du vite fait mal fait, mais ca à l'air fonctionner.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$a = "ta chaine a traité c'est celle là";
 
$tc = strlen($a);
$nbc_page = 1000;
$nb_loop = floor($tc / $nbc_page);
$last_loop = $tc % $nbc_page;
 
$Dest_tab = array();
$j = 0;
 
echo "size =".$tc." - nbloop =".$nb_loop." last_loop =".$last_loop."<br>";
 
for( $i = 0 ; $i <= $nb_loop ; $i++){
 
	$d_pos = $i * $nbc_page;
 
	if( $i < $nb_loop ) $f_pos = ($d_pos + $nbc_page) - 1;
 
	else $f_pos = $d_pos + $last_loop;
 
	echo $d_pos." - ".$f_pos."<br>";
	$Dest_tab[$j] = substr($a, $d_pos, $f_pos);
	$j++;
}
 
print "<pre>";
print_r($Dest_tab);
print "</pre>";
?>
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 19h39   #5
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Bonsoir et merci pour la proposition,

C'est tant mieux si vous prenez du plaisir à m'aider !

Cependant, il y a un souci, cela boucle trop de fois.

D'où peut venir le souci ?

EN PJ, l'exemple avec un jeu de donnée.
Fichiers attachés
Type de fichier : php test_trunc.php (32,7 Ko, 4 affichages)
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 11h38   #6
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Désolé, mais 23567 caracteres 23 passages cela me semble on ne peut plus normal non ?

Il faut aussi y mettre un peu du tien
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 12h11   #7
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Sauf que si on regardes, cela sort plusieurs fois la dernière page !

je ne comprends pas pourquoi il y a le souci.

De plus, pourquoi ne pas utiliser la fonction texte_resume() ?

De mon côté, j'ai essayé de faire ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	$pages = array();
	$num_page = 0;
 
	$nombreDeCaractParPage = 7000;
	$reste_contenu = $texte;
	$indice_coupe = 7000;
 
	while($indice_coupe >= $nombreDeCaractParPage )
	{
		$indice_coupe = texte_resume($reste_contenu,$nombreDeCaractParPage);
		$pages[$num_page]['texte'] = substr($reste_contenu,0,$indice_coupe);
		//page découpée
		$pages_texte = $pages[$num_page]['texte'];
		echo $pages_texte.'----------------------';
		$num_page++;
 
		$reste_contenu = substr($reste_contenu,$indice_coupe);	
	}

Par-conte, j'ai modifié la fonction texte_resume() pour qu'elle me renvoi la longueur du texte coupé.

Code :
1
2
....
return strlen($texte);
Exemple disponible : http://www.partir-en-vtt.com/test_trunc.php

Cependant, l'html ainsi que des mots sont coupés. La question est pourquoi ?

merci pour le coup de main.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 22h01   #8
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Un petit coup de main sur ce problème qui je suis sur, en aidera plus d'un

Par avance, merci.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/12/2011, 10h52   #9
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Est-ce que la question est trop compliquée ou mal formulée ?

Merci par avance de me guider car j'ai besoin de cette fonction de découpe pour créer des pages en gardant le formatage HTML pour mes voyages à vélo.

heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h38.


 
 
 
 
Partenaires

Hébergement Web