[php]insérer un espace[résolu]

kikou!!!

voilà mon new probleme!!!
disons que dans mon $contenu1 j’ai au final :


<tr><td colspan=3><table width=100% border=0 align=center cellpadding=0 cellspacing=0 id=menu-top><tr><td width=6% align=center><a href="../evenements.htm">Edito</a></td><td width=16% align=center><a href="../recherche/index.htm">D&eacute;couvrir sa destination</a></td><td width=14% align=center><a href="../voyage/index.htm">Pr&eacute;parer son voyage</a></td><td width=8% align=center><a href="../recherche/hotel.htm">Se loger</a></td><td width=9% align=center><a href="../evenement/index.htm">Ev&eacute;nements</a></td><td width=16% align=center><a href="../week_end/index.htm">Partir en week-end</a></td><td width=12% align=center><a href="../france_secrete/index.htm">S&eacute;jours insolites</a></td><td width=19% align=center><a href="../villes-de-terroir/index.htm">D&eacute;couvrir les terroirs</a></td></tr></table></td></tr>

et ce que j’aimerai avoir ce serais un espace entre chaque balise ouvrante
avoir par exemple


<tr> <td colspan=3> <table width=100% border=0 align=center cellpadding=0 cellspacing=0 id=menu-top> <tr> <td width=6% align=center> <a href="../evenements.htm">Edito </a> </td> <td width=16% align=center> <a href="../recherche/index.htm">D&eacute;couvrir sa destination </a> </td> <td width=14% align=center> <a href="../voyage/index.htm">Pr&eacute;parer son voyage </a> </td> <td width=8% align=center> <a href="../recherche/hotel.htm">Se loger </a> </td> <td width=9% align=center> <a href="../evenement/index.htm">Ev&eacute;nements </a> </td> <td width=16% align=center> <a href="../week_end/index.htm">Partir en week-end </a> </td> <td width=12% align=center> <a href="../france_secrete/index.htm">S&eacute;jours insolites </a> </td> <td width=19% align=center> <a href="../villes-de-terroir/index.htm">D&eacute;couvrir les terroirs </a> </td> </tr> </table> </td> </tr>

sans toucher le code en lui même!!! enfin, sans rentrer dans le corps du texte, et tout changer!!!!!
Je ne sais pas si j’ai été claire dans ce que je voulais!!! hi!!!

pas sûr d’avoir bien compris, mais tu peux essayer str_replace()

  • tu remplaces < par (espace)<
  • puis > par >(espace)
  • puis >(espace)(espace)< par >(espace)<

looooooooooooooooooooooooool!!!
euh quelqu’un peut me dire : POURQUOI JE N’Y AI PAS PENSE???
pffffffffffffffffff, mais c’est tout bête!!!
merci!!! franchement merci parce que j’aurais planché dessus je ne sais pas combien de temps alors que bon, c’est tout bête!!!
merci!!! mais n’importe quoi moi!!!

MeRKi MeRKi pour l’idée de < => (espace)<
et > => >(espace)
ah c’est cooooooooooooooooooooooooooooooooooool mais jme sens bête de ne pas y avoir pensé!!!!

ah oui oui, mais là, je me sens vraiment ridicule, mais vraiment!!!!!!! je cherchais une fonction qui permettait des trucs, j’étais partie sur la création des tableau qui quand il detecterait “<” et bien il mettrai un espace avant!!!!!
ah mais MiWi soooooooooooo ridicule!!!

Sinon tu as des parsers XML/HTML qui sont capables de réindenter…

je ne connais pas xml … enfin très brievement!!! :??:

Ben ça dépend de ce que tu veux faire, si c’est pour ton site, les espaces sont superflus sauf pour la lisibilité.

Si c’est pour avoir un document propre chez toi, tu peux utiliser un parser xml/html qui va juste réindenter le code.

ce que je suis en train de faire depuis le début, c’est un moteur de recherche et les espaces me sont utiles pour effectuer mon indexation!! en faite je rentre dans ma base de donnée tous les mots de plus de 2 lettres et qui ne sont pas des mots vide (il les elle alors mais or => vide de sens). Ces mots sont rentrés à partir d’un tableau de mot construit à partir d’un contenu d’un texte. Et ce tableau est formé grâce aux espaces. par exemple j’ai :

"le contenu de mon texte à mettre mot par mot"
mon tableau me donnera

$tableau[0] = contenu
$tableau[1] = texte
$tableau[2] = mettre
$tableau[3] = mot

… (le, de, mon, à, … étant des mots vides où de longueur <= 3) et dans mon exemple précédent (voir premier post), j’obtiendrai en gros, sans espace:

$tableau[0] = editodecouvrir
$tableau[1] = destinationpreparer
$tableau[2] = voyagese
$tableau[3] = logerevenement

Donc il me faut des espaces (supprimer après) pour obtenir

$tableau[0] = edito
$tableau[1] = decouvrir
$tableau[2] = destination
$tableau[3] = preparer
$tableau[4] = voyage
$tableau[5] = loger
$tableau[6] = evenement

et pour ainsi calculer le nombre d’occurence pour chaque mot dans ma page et au moment de la recherche afficher en premier les pages qui ont le plus de poids (par rapport aux nombres d’occurence!!!
voilà!!!
et je ne savais pas comment faire autrement qu’en rajoutant des espaces!avant mes balises html (que je supprime pour ne garder que le corps du texte

Tu utilises des regexp? tu peux limiter tes mots avec des délimiteurs (<, >, [, ], (, ), {, }, , ; etc). (voir preg_split() qui fait pareil qu’explode, avec des regexp :slight_smile:

Pour le reste, ça me semble pas cohérent de prendre en compte les tags HTML :

  1. Je remplacerai les &ecute; par e (voir avec la table des symboles HTML)
  2. Je ferai un coup de strip_tags éventuellement en autorisant quelques tags “utiles” (meta, etc) (regexp pour remplacer ça par des espaces : /<(’[^’]’|"[^"]"|[^>])*>/ (à tester))
  3. éventuellement, si tu veux la jouer fin, tu devrais prendre en compte juste les attributs alt, et title, qui sont du contenu descriptif.

Braiffe. Si ton truc marche, je ne vais pas t’embêter plus :slight_smile: