Nettoyage HTML avec regex negative lookahead

Nettoyage HTML avec regex negative lookahead - PHP - Programmation

Marsh Posté le 11-06-2019 à 11:48:58    

Hello à tous,

 

Dans le cadre d'un projet on doit récupérer du code html de la part du client, parfois il manque des balises de fermeture, du genre <li>Non fermés, non encapsulés par <ul></ul>

 

Je regardais à nouveau côté regex le negative lookahead pour tenter d'attraper ces dernières, hélàs je bloque sur la partie suivant

 
Code :
  1. La regex : /<li>([^\n]+)(?!<\/li> )/
  2. Matche hélàs positivement cette dernière ..
  3. Regex : <li>(?!<\/li> )([^<\/li>\n]+)
  4. n'est pas géniale, je souhaiterais exclure littéralement la string </li> afin de n'attraper que la ligne "<li>Ok"
  5. <li>KO</li>
  6. <li>OK
 

J'ai mis mes essais ici : https://regex101.com/r/0usLzN/1

 

Auriez-vous des idées, une lumière ? Merci par avance


Message édité par grosbin le 11-06-2019 à 11:51:45

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 11-06-2019 à 11:48:58   

Reply

Marsh Posté le 11-06-2019 à 12:24:27    

Il y a peut-être moyen de faire plus simple ou moins tordu mais cela semble fonctionner :

Code :
  1. (?(?=<li>.*<\/li> )|<li>(.*))


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 11-06-2019 à 13:13:24    

Joli, merci bien ;)


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed