Bonjour à tous,

Je suis en train de me créer une function mais je bloque.
J'ai un textarea dedans je met un texte et je voudrais qu'après chaque mot un "." s'y place, donc j'ai réussi.

Seul problème qui me faut absolument c'est qu'il ne mette pas de "." au dernier mot.

Est-ce-que quelqu'un serait comment faire ?

Cordialement,

14 réponses


antho07
Réponse acceptée

Et si avant ton nl2br tu fais:
$stats = str_replace("\r\n","\n",$stats);
puis $stats = str_replace("\n",".",$stats);

et apres ton n2blr ?

Dans le texte ya bien des sauts de lignes? enfin on passe à la ligne chaque fois?

Bonjour, Tu peux ajouter un substr() pour supprimer la fin de la chaine ?

Bonjour, [code] var chaine = "ceci est un essai"; var tab = chaine.split(' '); // => tab = ["ceci", "est", "un", "essai"] var chaine2 ='' ; for(i=0;i<tab.length if chaine2 tab> chaine2 = "ceci. est. un. essai"
[/code]

Je sais pas si ça t'aide,

Bien cordialement

Antho</tab.length>

En faite, la question que je me pose, c'est le . doit-il être mis quand on récupère le contenu du textarea ou alors au fur et à mesure que l'utilisateur écrit dedans.

cordialement

Tchoupi
Auteur

Avec la première méthode substr ça fonctionne on va dire, faut juste que je modifie un peu ma fonction. Je vous retiens au courant.

Tchoupi
Auteur

Une autre question j'ai fais un tableau pour str_replace comme suit :

Tout ceci n'est qu'un exemple.

$in = array(
                'PA',
                'PO',
                'Dommages Air',
                'Dommages Feu',
                'Dommages Terre',
                'Dommages Eau',
                'Dommages'
                );
        $out = array(
                'PA.',
                'PO.',
                'Dommages Air.',
                'Dommages Feu.',
                'Dommages Terre.',
                'Dommages Eau.',
                'Dommages.'
                );
        $stats = str_replace($in, $out, $stats);

Et voici mon textaera :
X à X Dommages Air
X à X Dommages Feu
X à X Dommages Eau
X à X Dommages

Et quand je fais echo str_replace il m'affiche ceci :
X à X Dommages. Air.
X à X Dommages. Feu.
X à X Dommages. Eau.
X à X Dommages.

Il m'ajoute des points après dommages d'accord, mais pour les trois premier je voudrais qu'il n'en mette.

J'espère que vous auriez compris.

Cordialement,

Je regarde ça... en plus je viens de me rendre compte que dans mon post précedent je t'ai donné un code Js alors que tu voulais un code php.... heuresement que c le week end mdr

<?php 
$in = array(
                'PA',
                'PO',
                'Dommages Air',
                'Dommages Feu',
                'Dommages Terre',
                'Dommages Eau',

                );
        $out = array(
                'PA.',
                'PO.',
                'Dommages Air.',
                'Dommages Feu.',
                'Dommages Terre.',
                'Dommages Eau.',

                );
        $stats = "X à X Dommages Air X à X Dommages Feu X à X Dommages Eau X à X Dommages ";
        $stats = str_replace($in, $out, $stats);
        $stats.=".";
        echo $stats;
?>

LA sortie:

X à X Dommages Air. X à X Dommages Feu. X à X Dommages Eau. X à X Dommages.

Tchoupi
Auteur

Dans le tableau tu as oublié $in = 'Dommages' et out = 'Dommages.'

Car j'ai des caractéristiques en Dommages Terre mais aussi Dommages.

Du coup, ce que tu as fais me renvoi le même résultat que j'avais déjà.

edit : j'ai compris, tu as retiré Dommages du tableau et tu as rajouté un points au à la fin.

Non justement c'est pas comme ceci que je cherche.

Je l'ai mis à la fin le point. en parant du principe qu'on était à la fin de la chaîne de caractères.
Pour mieux t'aider , il faudrait la forme exacte du texte récupéré sur lequel travailler.
Y a-t-il des sauts de lignes?
est-ce une chaine de caractères collée?

Edit: Par ailleurs comment sont-affichés les "dommages truc" ? si c'est pas rentré par l'utilisateur mais quelque chose d'afficher du style

if(machin==2) echo "dommage terre" etc.. autant mettre le point à ce moment la.

Tchoupi
Auteur

Est ce que se serait possible de le faire avec les expressions régulière, du genre si après le mot dommages ont trouvent feu ou air ou eau on met le points après feu etc..
sinon on le met après le mot dommages.

Pour ta question voici un texte que j'ajoute dans le textarea ($stats)
6 à 10 Dommages
31 à 50 Puissance
31 à 50 Sagesse
251 à 300 Vitalité
6 à 10 Soins
11 à 20 Prospection
6 à 10% Résistance Neutre
6 à 10% Résistance Feu
4 à 5 Coups Critiques
1 PO

Et je fais un nl2br($stats)
Après j'ajoute un points via mon tableau ce qui donne NORMALEMENT ce résultat :
6 à 10 Dommages.
31 à 50 Dommages Air.
31 à 50 Sagesse.
251 à 300 Vitalité.
6 à 10 Soins.
11 à 20 Prospection.
6 à 10% Résistance Neutre.
6 à 10% Résistance Feu.
4 à 5 Coups Critiques.
1 PO.

Après je fais un substr($stats, 0, -1) donc qui enlève le dernier points puis pour finir je fais un explode au niveau des ".".

Comme ceci je peux travailler sur chaque caracs comme je le souhaite.

Tchoupi
Auteur

C'est ce que je voulais faire, mais je me rappelais plus de "\r" et "\n" du j'étais obligé d'aller chercher midi à quatorze heure...

Bah franchement je te remercie énormément je vais remettre tout ma function en place et tester ça, normalement.
Normalement tout fonctionnenera

De rien,
oui c'est relativement chiant si tu me pardonnes l'expression ces sauts de ligne un coup avec un \r un coup sans...
Bonne continuation

Antho

Tchoupi
Auteur

Problème résolu.

Merci à toi.