[RESOLU] preg_replace

Petit nouveau ! | 2 Messages

05 avr. 2025, 18:12

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 avr. 2025, 19:53

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é
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

06 avr. 2025, 11:29

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.