[RESOLU] Retirer du contenu avec preg_replace, ne fonctionne pas

Eléphanteau du PHP | 23 Messages

26 avr. 2016, 16:37

Bonjour à vous tous,

J'espère que le sujet est assez clair, car je n'arrive pas à l'exprimer autrement.

Je récupère une page HTML pour en traiter le contenu. Mon soucis du jour est le suivant : Je tente de supprimer tout un pavé de cette page, car ce dernier me pose un soucis dans le traitement général de la page.

Le dit pavé se trouve prit entre deux lignes html.

J'utilise la fonctionne preg_replace, pour faire "sauter" ce pavé, et le remplacer par "rien".

Ce qui donne cela :
private function retirer_menu($contenu){
            $code = '#<div class="site-header__logo-and-account is-hidden-tablet-and-below">(.*)<div class="header-categories__search">#sU'; 
            $contenu = preg_replace($code, "", $contenu);
            
            return $contenu; 
        }
Pour information, j'ai utilisé le site regex101.com pour m'assurer que le dit pavé est bien traité par mon regex, ce qui est le cas.

Pour être certain que ce bloque de texte est supprimé, j'ai fais un print_r de $contenu. Et c'est là que tout mon soucis se pose. Le bloque en question n'est pas supprimé. Les deux lignes ont bien disparue, mais pas ce qui se trouve au milieu. Je dois commettre une erreur, mais je n'arrive pas à voir où. En effet, j'ai déjà utilisé cette fonction plusieurs fois, sans soucis, mais pour faire "sauter" uniquement de petit bout de code. Ici je parle de centaines de ligne.

De plus, je tiens tout de suite à préciser que ce $contenu ne contient aucun retour à la ligne, car passé au travers d'une fonction qui retire tout cela.

Merci par avance pour votre aide, car cela fait maintenant des heures que je m'arrache le peu de cheveu qui me reste :mrgreen:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 avr. 2016, 17:02

Bonjour,

Sur regex101, tu peux enregistrer ton exemple et nous partager le lien afin que l'on voit à quoi ça ressemble ?

Car sans connaitre le contenu original, c'est difficile de voir le bug
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 23 Messages

27 avr. 2016, 11:17

Bonjour @rthur,

Merci de la considération que tu montres face à mon soucis.

Voici le lien demandé : https://regex101.com/r/qZ6uF4/1

Bien à toi

Eléphanteau du PHP | 23 Messages

29 avr. 2016, 10:29

Bonjour,

permettez moi un petit "up", car je n'ai toujours pas trouvé la solution à ce petit soucis.

En vous remerciant par avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 avr. 2016, 11:45

Bonjour,

Essayes sans les parenthèses autour du .* , il n'y a vraisemblablement rien besoin de capturer pour ce remplacement :)
(et aucune autre raison logique au fait que cela ne fonctionne pas :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 23 Messages

03 mai 2016, 18:58

Ok...

J'avais laissé de côté ce bout de code...

J'ai trouvé le "bug", il s'agissait d'un bug d'interface chaise clavier...

Désolé de vous avoir fait perdre du temps :)