Aller au contenu

Traiter un texte et en retirer seulement les mots


Sujets conseillés

Posté

Bonjour,

J'essaye de réaliser un petit script qui me parse un texte scientifique pour en récolter seulement les mots de plus de 3 lettres en enlevants tous les sigles mathématicophysique contenus dans ces textes . J'utilise la méthode suivante :

$RegexSearch = array ('(pour|dans|avec|sont|cette|question|sous|mode|tout|elle|action|partie|note|do
ner|solution|montrer|page)', '((\s|\n).{1,3}(\s|\n))', '((\s|\n).{1,3}(\s|\n))', '(\n)', '([0-9])','([,\.:;\*\(\)\[\]\{\}])', '([\+\-=\?])', '(\')', '([\s]{1,10})', '((\s|\n).{1,3}(\s|\n))', '((\s|\n).{1,3}(\s|\n))');

$RegexReplace = array (' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
$out = preg_replace($RegexSearch, $RegexReplace, $text);

Le texte provient de copier coller de PDF mais dans certains cas ça ne marche vraiment pas (erreurs PHP du genre Warning: Unexpected character in input: )

Des idées pour améliorer tout ça ?

Existe-t-il des classes PHP destinée à ce genre de traitement ?

Merci d'avance

Posté

faut deja que tu mete un filtre qui ne te garde que les A-Z a-z 0-9

je crois que c'est avec la fonction ereg , mais je ne sait pas si elle est presente sur php

Posté

$input = '...ma chaine super compliquee...';
preg_match_all('/([a-zA-Z]{2})([a-zA-Z]+)([ .,])/i',$input,$matches);
echo '<pre>'; print_r($matches); echo '</pre>';

Ca devrait te donner quelques trucs... (la regex est améliorable)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...