par
sohnyrin » 24 juin 2011, 10:25
Salut,
Alors je dois transformer un texte en termes, tout en nettoyant le contenu pour n'avoir que des termes valables.
Voilà où j'en suis, c'est un peu le boxon mais à force de tester plein de solutions différentes, disons que j'en ai eu mare de faire le ménage et je m'énerve...
$terms=$this->data['Tablet']['translit'];
$terms= str_replace(array('\r\n', '\r', '\n','\n\r', ' ',' ', ' \r',' \n', ' \r\n',' \n\r' ), ' ', $terms);
$terms = trim($terms, chr(173));
$terms=trim($terms);
$terms = str_replace('/\s+/', ' ', $terms);
$terms = explode(" ", $terms);
$terms=array_map('trim', $terms);
$anti_terms = array('@tablet','1.','2.','3.','4.','5.','6.','7.','7.','9.','10.','11.','12.','13.','14.','15.','16.','17.','18.','19.','20.','Rev.',
'Obv.','@tablet','@obverse','@reverse','C1','C2','C3','C4','C5','C6','C7','C8','C9', '\r', '\n','\r\n', '\t',''. ' ', null, chr(173), 'x' );
foreach($terms as $key => $term) {
if(in_array($term, $anti_terms) || is_numeric($term)) {
unset($terms[$key]);
}
}
En gros ça fonctionne mais je me retrouve avec des termes du genre
"mot 5."
dans le texte, c'était comme ça
bla bla bla mot
5. bla bla bla
Ça veux dire que je n'arrive pas à éliminer un retour à a la ligne... En général sur les autres lignes il y a un espace à la fin de la ligne ce qui fait que le début de l'autre ligne est automatiquement mis dans un autre élément de tableau.
Est-ce que c'est mon str_replace du début qui ne fonctionne pas ? ou il y a une autre manière d'indiquer un retour à la ligne et je pourrais régler en ajoutant un autre caractère à filtrer ?
Merci de m'aider

Salut,
Alors je dois transformer un texte en termes, tout en nettoyant le contenu pour n'avoir que des termes valables.
Voilà où j'en suis, c'est un peu le boxon mais à force de tester plein de solutions différentes, disons que j'en ai eu mare de faire le ménage et je m'énerve...
[php]
$terms=$this->data['Tablet']['translit'];
$terms= str_replace(array('\r\n', '\r', '\n','\n\r', ' ',' ', ' \r',' \n', ' \r\n',' \n\r' ), ' ', $terms);
$terms = trim($terms, chr(173));
$terms=trim($terms);
$terms = str_replace('/\s+/', ' ', $terms);
$terms = explode(" ", $terms);
$terms=array_map('trim', $terms);
$anti_terms = array('@tablet','1.','2.','3.','4.','5.','6.','7.','7.','9.','10.','11.','12.','13.','14.','15.','16.','17.','18.','19.','20.','Rev.',
'Obv.','@tablet','@obverse','@reverse','C1','C2','C3','C4','C5','C6','C7','C8','C9', '\r', '\n','\r\n', '\t',''. ' ', null, chr(173), 'x' );
foreach($terms as $key => $term) {
if(in_array($term, $anti_terms) || is_numeric($term)) {
unset($terms[$key]);
}
}
[/php]
En gros ça fonctionne mais je me retrouve avec des termes du genre [quote]"mot 5."[/quote]
dans le texte, c'était comme ça
[quote]bla bla bla [b]mot[/b]
[b]5.[/b] bla bla bla[/quote]
Ça veux dire que je n'arrive pas à éliminer un retour à a la ligne... En général sur les autres lignes il y a un espace à la fin de la ligne ce qui fait que le début de l'autre ligne est automatiquement mis dans un autre élément de tableau.
Est-ce que c'est mon str_replace du début qui ne fonctionne pas ? ou il y a une autre manière d'indiquer un retour à la ligne et je pourrais régler en ajoutant un autre caractère à filtrer ?
Merci de m'aider :-)