Se connecter / S'enregistrer
Votre question

Enlever mots du text fonction php

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
30 Avril 2011 16:37:53

Bonjour,

J'ai besoins de votre aide pour faire executer cette fonction.

Tout ce qu'il reste à faire, c'est de la faire fonctionner. Mais comment? Le but est de traiter un texte ou une phrase dans un formulaire en:

1. eliminant les mots comme le,la,les etc..
2. revonyer le texte sans ses mots
3. et de compter le nombre de mots restants.


  1. <?php
  2.  
  3.  
  4. function makeTags($entry) {
  5.  
  6. $new = stripslashes($entry);
  7.  
  8. $new = strtr($new, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  9.  
  10. $except = "(un|une|le|a|les|la|de|des|du|et|non|qui|que|quoi|est|c'est|ca|c'etait|encore|le|c|d|l|n|je|ne|pas|ou|aussi|avec|sans)";
  11. $new = preg_replace("#\b".$except."?\b#i",'__', $new);
  12.  
  13. $new = preg_replace('/[^a-zA-Z0-9_]/', '_', $new);
  14.  
  15. $new = preg_replace('/[_]{2,}/','_', $new);
  16.  
  17. $new = preg_replace('/^[_]/','', $new);
  18.  
  19. $new = preg_replace('/[_]$/','', $new);
  20.  
  21. $tags = explode('_', trim($new));
  22.  
  23. return $tags;
  24.  
  25. }
  26. ?>



Je voudrais que, quand un utilisateur rentre un texte ou une phrase dans un formualire, la fonction s'execute et renvoie le texte ou la phrase, sans les mots mentionnés dans la variable $expect.

  1. <form action="traitement.php" method="post">
  2.  
  3. <textarea rows="5" cols="20" name="entry">Entrez votre texte </textarea>
  4. <input type="submit" value="Commencer">
  5. </form>



Il faut une variable $entry= $_POST['entry ']; non ?
Merci.

Autres pages sur : enlever mots text fonction php

a c 145 L Programmation
30 Avril 2011 17:02:40

Dans ton fichier traitement.php, il faut faire un appel à ta fonction en lui passant le texte:
  1. <?php
  2. $parsed = makeTags($_POST['entry']);
  3. echo 'Nb mots: ', count($parsed), '<br />';
  4. echo 'Nouvelle phrase: ', implode(' ', $parsed), '<br />';
m
0
l
30 Avril 2011 17:16:01

Daccord!! elle fonctionne!! merci..Toutefois peux tu m'expliquer la partie stp
  1. ', implode(' ', $parsed), '


Il y aurait-il un moyen pour compter le nombre de chaque mots comme le la les etc... c'est a dire l'occurence de chacun de ces mots ?

Dans une boucle par exemple?

j'ai une petite idee comment le faire..mais en python pas en php...

en python on met le tout dans une liste, qu'on fait parcourir par une boucle while ou for..en regardant ch par exemple(prendre chaque mots ) et inclure un variable compteur pour chacun des mots...


mais en php ??


merci encore...




m
0
l
Contenus similaires
a c 145 L Programmation
30 Avril 2011 18:38:57

Le implode sert juste à rassembler les éléments du tableau retourné par la fonction en une chaine de caractères.

Pour ton compteur de remplacement :

Tout est dans la doc :) 
Citation :
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

Tu peux donc modifier ta fonction ainsi :
  1. function makeTags($entry) {
  2. $new = stripslashes($entry);
  3. $new = strtr($new, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  4. $except = "(un|une|le|a|les|la|de|des|du|et|non|qui|que|quoi|est|c'est|ca|c'etait|encore|le|c|d|l|n|je|ne|pas|ou|aussi|avec|sans)";
  5. $new = preg_replace("#\b".$except."?\b#i",'__', $new, -1, $count);
  6. $new = preg_replace('/[^a-zA-Z0-9_]/', '_', $new);
  7. $new = preg_replace('/[_]{2,}/','_', $new);
  8. $new = preg_replace('/^[_]/','', $new);
  9. $new = preg_replace('/[_]$/','', $new);
  10. $tags = explode('_', trim($new));
  11. return array('res' => $tags, 'count' => $count);
  12. }

Et modifier le code que je t'ai donné:
[code]<?php
$parsed = makeTags($_POST['entry']);
echo 'Nb mots: ', count($parsed['res']), '<br />';
echo 'Nb mots supprimés: ', $parsed['count'], '<br />';
echo 'Nouvelle phrase: ', implode(' ', $parsed['res']), '<br />';
m
0
l
30 Avril 2011 19:33:19

hmm j'ai essayer les modifications mais ça ne marche pas..c'est a dire que le nombre de mots supprimés n'est pas exact...quand je met par exemple:

"je vais à la plage"

il me renvoit


  1. Nb mots: 2
  2. Nb mots supprimés: 10
  3. Nouvelle phrase: vais plage


il enleve bien les mots non voulus mais pourquoi 10? c'est pas plutot les caracteres dans ce cas ?


merci.
m
0
l
a c 145 L Programmation
1 Mai 2011 10:11:43

Ca pourrait effectivement être 2 fois le nombre de caractères, c'est assez étrange. Je vais faire des essais et je te dirai.
m
0
l
1 Mai 2011 21:01:20

d'accord..merci encore pour tout...AU moins grâce à toi il fonctionne le code!!Tiens moi au courant si t'as du nouveau!
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS