Page 1 sur 1

preg_replace

Posté : 05 avr. 2025, 18:12
par Lionel R
Bonjour bien.

Il s'agit d'un moteur de recherche sans base de données, suffisant pour l'usage que j'en ai. Je voudrais, dans les pages .html, supprimer tout ce qui se trouve dans le pied de page.

La variable de recherche est $tout.

Le code est le suivant : $tout=preg_replace('`<footer.*?/footer>`s', '', $tout);

Or, ça ne fonctionne pas : si j'effectue une recherche avec (pour test) un texte qui est dans le pied de page, ce texte est bel et bien trouvé – comme quoi ce qui est entre <footer> et </footer> n'a pas été supprimé.

Voilou, je ne doute pas que quelqu'un de compétent saura quoi faire. Merci par avance.

Re: preg_replace

Posté : 05 avr. 2025, 19:53
par @rthur
Bonjour,

Tu es sûr d'avoir le code source html de ta page dans la variable $tout ?
Car là ton code est censé supprimer le footer qui serait contenu dans la variable $tout, il n'y a aucune recherche de mot clé

Re: preg_replace

Posté : 06 avr. 2025, 11:29
par Lionel R
Merci pour ton retour.

Au vrai, c'est assez incompréhensible... $tout est censée contenir le code html de la page. Afin de la nettoyer (si j'ose dire), le code comprend ces lignes :

$tout=preg_replace('`<head.*?/head>`s', '', $tout);
$tout=preg_replace('`<script.*?/script>`s', '', $tout);
$tout=preg_replace('`<style.*?/style>`s', '', $tout);
$tout=preg_replace('`<select.*?/select>`s', '', $tout);
$tout=preg_replace('`<footer.*?/footer>`s', '', $tout);

Sauf que... si je regarde $tout avec ces lignes dans le code, puis en les supprimant, le résultat est le même : il ne reste que le contenu utile, savoir le texte affiché à l'écran (entre <main> et </main>). Donc, ces lignes ne servent à rien et le « nettoyage » est probablement fait ailleurs. Bon, c'est du code importé et je ne vais pas me prendre la tête avec ça, du moment que ça fonctionne.

Mon souci, c'était quelques éléments dans le pied de page. Comme ils sont fixes (et limités), je les vire avec str_replace et c'est tout bon.