Indexer une page html - PHP - Programmation
Marsh Posté le 21-09-2007 à 16:01:19
Les signes spéciaux comme tu dis, c'est surement les caractères autres que a à z sans les accents qui sont encodés correctement avec les codes html de ces entités.
Faut les traduire à la volée pour avoir la version lisible par toi même. Ou faire avec
Marsh Posté le 21-09-2007 à 18:43:11
Tu peux utiliser html_entity_decode() pour convertir les codes HTML en caractères 'normaux'.
Niveaux accents, il faut faire super attention à l'encodage de ce que tu vas parser, ça peut changer du tout au tout!
Tu peux aussi choisir de restreindre tout ce qui n'est pas lettres simples en autre chose, comme le dit leflos5
Marsh Posté le 21-09-2007 à 18:46:55
J'ai trouve une solution mais bon...
DAns le test je fais
Code :
|
... j'incremente la valeur finale et donc je prend en compte le mot testé ...
Ca marche mais je connais pas trop bien cette commande eregi et je voudrais rajouter en test le fait que je ne souhaite pas non plus prendre les caractères ":<>/\@&-_..." Enfin en gros je ne veux que les caractères a-z c'est tout
Merci d'avance
Marsh Posté le 21-09-2007 à 18:51:56
oups, j'avais pas bien vu déjà une GROSSE erreur dans ton code
Tu lis par bloc de 4ko et tu fais les traitements en direct. Donc si une balise commence avant la fin des 4ko et termine après, tu te bouffes plein de saloperies.
Il faut faire ton strip_tags une fois TOUT le fichier lu, ça devrait déjà calmer les choses (sans toutefois tout régler)
Marsh Posté le 21-09-2007 à 19:30:23
edwoud a écrit : oups, j'avais pas bien vu déjà une GROSSE erreur dans ton code |
Objection !
Voir la doc de fgets à ce sujet : http://fr3.php.net/fgets . Si une nouvelle ligne se présente avant la fin du buffer, cette nouvelle ligne est alors retournée. Il est vrai cependant que le plus propre reste un fgets($handle) sans longueur maximum.
Marsh Posté le 21-09-2007 à 19:31:52
Odissine a écrit : J'ai trouve une solution mais bon...
... j'incremente la valeur finale et donc je prend en compte le mot testé ... |
Pour des lettres de A à Z :
preg_match('#[a-z0-9]{0,}#i',$word[i]);
Marsh Posté le 21-09-2007 à 19:54:31
WiiDS a écrit : |
Objection rejetée! On peut éclater ses balises sur plusieurs lignes
Code :
|
Marsh Posté le 21-09-2007 à 20:59:22
edwoud a écrit :
|
Objection !
Rien ne prouve qu'il aie éclaté ses balises sur plusieurs lignes
Marsh Posté le 22-09-2007 à 01:44:57
Ok merci à tous mais je pense que ma demande n'est pas très claire ^^
Je me reprends:
J'ai des pages html (ou php) dans un repertoire (./procedures/), j'ai crée un menu qui affiche dans un menu déroulant la liste des documents présent dans le dit repertoire.
Ce que je souhaite c'est en choisissant un documents, ne recuperer dans son contenu QUE les mots de + de 4 caractères. ex :
<html><head><body>Ceci est un test tout simple dans lequel je ne souhaite récuperer que les mots supérieurs à 4 caractères<br>1) c'est simple je pense<br>2) je sais pas comment faire autrement</body></head></html>
Dans ce petit bout de code, je ne voudrais récuperer que les mots, afin de les ajouter dans un base de données et les associer au fichier html en question. C'est à dire je ne veux que "ceci, tout, simple, dans, lequel, souhaite, récuperer, mots, supérieur, caractères,...
Ceci dans le but de faire un moteur de recherche avec les documents que j'ai indéxer avec cette méthode.
Existe-t-il un moyen simple et rapide pour faire cette "indexation" ? La fonction strip_tags($variable) permet de supprimer justement les balises HTML (ca ca marche) en revanche j'ai encore un problème avec les ponctuations du type { } < > ] [ - ... je ne voudrais vraiment que des chaines de caractères de 4 caract. ou plus.
Merci de votre aide.
Cordialement
Marsh Posté le 22-09-2007 à 02:40:27
avec ton exemple ca m'a pris une petite minute grand max...
tu t'es pas creusé la tête
ps : le bbcode foire les backslashes : y en a un devant le w et le n dans le str_replace
Code :
|
Marsh Posté le 22-09-2007 à 09:06:38
WiiDS a écrit : |
Objection rejetée, quand on récupère un fichier HTML, il ne faut supposer de rien, sinon c'est la cata assurée! Et puis ce n'est pas propre. Quand bien même ce serait le cas actuellement, vu que c'est pour un moteur propriétaire de recherche. Si un jour il change la génération du fichier HTML, badaboum, tout part en vrille. Il faut programmer propre dès le début, ça ne coûte pas grand chose et ça ouvre à toutes les évolutions!
Marsh Posté le 22-09-2007 à 11:07:53
Merci Spike, je vais tester tout ca Lundi.
Je me suis pris la tête mais malheureusement mes connaissances en PHP datent un peu et étant comme beaucoup autodidactent j'ai pris surement de mauvaise habitudes, ce qui m'explique aujourd'hui mon appel à l'aide
Merci en tout cas à tous !
Marsh Posté le 21-09-2007 à 14:53:57
Bonjour à tous,
VOilà je suis confronter à un problème que je n'arrive pas a résoudre...
Je dois mettre dans une base de donné le contenu d'une page HTML afin d'utiliser son contenu comme mots clés pour mon moteur de recherche ?
j'utilise les commandes suivantes :
Seulement voilà, je voulais ne récuprer que les mots de plus de 3 caractères donc j'ai rajouté cette commande :
if (strlen($word[$i]) > 4) ... blabla
Et je m'aperçois qu'en plus de tout ca il m'affiche bcp de chose inutile comme des caractères spéciaux ... et des chiffres ...
Existe-t-il un moyen simple de ne récuprer que les mots de > 3 caractères et de ne pas prendre les signes speciaux et chiffres ...
Merci de votre aide.