Notice: Undefined index: position in /home/piregwan/public_html/forum2/reponses2.php on line 50
Piregwan 2000



  04 07 2002 � 12:02


Je me suis fait un petit parser en PHP qui fait des troncatures.
Mais ca foire un peu parce que j'ai mis une troncatures assez petite (17 car) pour que mon guestbook ne soit pas explos� par plus de 17 caracteres 'W' qui se suivent.
Le probleme c'est avec les sauts de lignes. Si on tape Return a la fin d'une phrase et qu'on continue son texte sur la ligne suivante, le parser ne prendra pas le saut de ligne comme s�parateur, car j'utilise la fonction explode($chaine, " ") (avec un espace comme s�parateur donc) pour r�cup�rer mes mots dans un tableau.
Du coup le dernier mot de la ligne pr�c�dant le Return et le premier mot de la ligne suivant le Return ne feront qu'un, avec le caractere Return entre les deux.

exemple :
abcde
fghijk

sera pris comme "abcde[caractere Return]fghijk"

et alors on arrive facilement a 17 caracteres avec ce truc et en g�n�ral le mot suivant le Return est tronque en plein milieu...

une solution serait, avant de faire un explode, de remplacer chaque return par un return+espace.

mais quel caractere return utiliser ? \n ? \n\r ? comment utiliser la fonction str_replace ? j'ai essay� avec str_replace("\n", "\n ", $chaine); mais ca ne change rien...

si vous pouviez m'aider...

merci

@+

sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy





  04 07 2002 � 12:38


Apr�s le htmlentities, et avant ta troncature tu fais un truc comme �a :

$chaine = ereg_replace("\n"," <br> ",$chaine);

Chez moi �a marche.

Per (squatteur de topic - )
40 ans (Plage de Pors-Carn)
per2censured@aol.com
http://www.ebodyboard.online.fr

L'alcool est mon pire ennemi.
Fuir l'ennemi est l�che.





  04 07 2002 � 13:10


ah mais ca va pas si je fais le htmlentities avant la troncature...

imagine l'expression suivante : "j'�tais"
elle prend 7 caracteres. Avec les htmlentities ca fait : "j'étais" ce qui fait 19 caracteres, du coup mon expression de 9 caracteres est tronqu�e apres le "a" (parce que je tronque a 17 caracteres) et c'est carr�ment pas bon !

moi je r�cupere ma chaine dans la base, je fais un stripslashes, puis un explode($chaine, " "), puis les troncatures, puis htmlentities, puis nl2br.

donc ca ne r�soud pas mon probleme.

Il se peut que je m'y prenne vraiment mal aussi...

merci quand meme

sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy





  04 07 2002 � 13:23


Ah oui, excuse moi, attent, essaye �a :

$texte = ereg_replace("\n"," \n ",$texte);
$texte = troncature($texte, "30"); // ta fonction troncature
$texte = htmlentities($texte);
$texte = nl2br($texte);

J'ai essay�, �a marche bien. Enfin, je pense.

Per (squatteur de topic - )
40 ans (Plage de Pors-Carn)
per2censured@aol.com
http://www.ebodyboard.online.fr

L'alcool est mon pire ennemi.
Fuir l'ennemi est l�che.





  04 07 2002 � 14:28


ben non, ca n'a pas l'air de marcher...
Sous windozs les caracteres return sont en fait des \n\r non ? C'est peut-etre de la que ca foire ?

sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy





  04 07 2002 � 14:58


Essaye en virant le explode et le stripslashes.
Pitetre que �a marchera.

Sinon, je vois pas... faut attendre que quelqu'un qui gere en php reponde
Bonne chance.

Per (squatteur de topic - )
40 ans (Plage de Pors-Carn)
per2censured@aol.com
http://www.ebodyboard.online.fr

L'alcool est mon pire ennemi.
Fuir l'ennemi est l�che.





  04 07 2002 � 15:06


si je vire le explode et le stripslashes, je ne peux carr�ment plus rien faire

mais t'inquiete, merci pour ton aide, je vais encore chercher un peu.

@+ et merci

sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy





  04 07 2002 � 15:29


tiens je te donne (de t�te mais ca doit �tre � peu pres ca) l'ordre des traitements de ta chaine :

$chaine=str_replace("\n", " <br> ", "$chaine");
$tbMots = explode(" ", $chaine);
$i=0;
while ( $i <count($tbMots))
{
if (strlen($mot)> 17))
{
//FONCTION D'INSERTION D'ESPACE
}
}

Voilou.
dit-moi si c'est ce que tu cherches.
@ +

benzor (admin fanatique lvl 1 - )
47 ans (Chamb�ry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 � 15:41


dans l'ordre, je fais :
o r�cup�ration de ma chaine : $chaine
o stripslashes
o explode($chaine, " ")
o boucle sur les entr�es du tableau et troncatures �ventuellement (a la fin de chaque it�ration je reconstruis la chaine)
o htmlentities
o nl2br

maintenant ce que je veux c'est ajouter un espace apres chaque retour a la ligne pour �viter le probleme cit� plus haut. Cet ajout se fera entre le stripslashes et le explode.

merci @+

sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy





  04 07 2002 � 16:24


Oups excuses-moi
ben vire ton htmlentities c de la daube, il convertit pleins de trucs inutilement.
Tu fais une fonction qui convertit les entit� html et qui rajoute des espaces devant... comme ca t'es pas emmerd�.
ex :
function Convertir($chaine)
{
$chaine=str_replace(" <", " <", "$chaine");
$chaine=str_replace("\t", " � � ", "$chaine");
$chaine=str_replace("\r", "", "$chaine");
etc ...
Puis tes retours � la ligne :
$chaine=str_replace("\n", " <br> ", "$chaine");
$chaine=str_replace(" <br> ", " <br> ", "$chaine"); // mettre espaces autour du <br>

return $chaine;
}
apres tu fais ton traitement de c�sure.

[edit] $chaine=str_replace(" <br> ", " <br> ", "$chaine"); // y'a pas d'espaces devant le premier <br> hein.. [edit]

benzor (admin fanatique lvl 1 - )
47 ans (Chamb�ry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 � 16:35


ah ok d'accord, je comprends mieux.
Je ne savais pas que htmlentities c'�tait pas recommand�.

Pour les espaces avant <br> je sais que c'est le parser de piregwan qui en rajoute.

merci bien !!!

sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy


Pour r�pondre � ce sujet (et notifier automatiquement son auteur), cliquez sur le bouton REPONDRE A CE SUJET. Si vous voulez en plus avertir de votre r�ponse une personne qui a particip� � ce sujet, cliquez sur le bouton en face de son intervention. Enfin si vous voulez inviter quelqu'un � r�agir, utilisez les appeaux ci-dessous. Seuls les membres logu�s peuvent utiliser les appeaux et seuls les membres actifs peuvent �tre appeaut�s ^^. Bonne notification !

Vous n'�tes pas membre ou vous n'�tes pas logu�(e) ou les appeaux sont d�sactiv�s dans votre profil. Vous ne pouvez pas utiliser les appeaux.