[PHP] Reg-ex ; Nettoyage de balise
l4palme
-
l4palme -
l4palme -
Bonjour,
Bonjour,
J'aimerais nettoyer un tableau html de toutes les propriétés (id, class, valign, etc..) sauf les colspan et rowspan (puisque ça change la signification du tableau sans ceux-ci).
Voici un exemple de 'row' à nettoyer
pour devenir
Ainsi, je suis capable de conserver mes colspans et rowspans avec les expressions régulières suivantes :
Par contre mon soucis survient lorsqu'il n'y a pas de colspan / rowspan. J'essayais de trier avec l'expression régulière suivante
Mais évidemment, ça retire mes rowspan et colspan.
J'aimerais donc savoir comment paufiner une requête afin que ça fasse exactement ce que je veux. (Il ne manque peut-être qu'une simple petite chose mais j'ignore quoi).
Merci d'avance
Bonjour,
J'aimerais nettoyer un tableau html de toutes les propriétés (id, class, valign, etc..) sauf les colspan et rowspan (puisque ça change la signification du tableau sans ceux-ci).
Voici un exemple de 'row' à nettoyer
<tr> <td class="aaaa" id="jimbo"></td> <td></td> <td class="asdasd" colspan="3" id="asd">Récolte 2007</td> <td class="asdasd" colspan="3" id="asd">Récolte 2008</td> </tr>
pour devenir
<tr> <td></td> <td></td> <td colspan="3">Récolte 2007</td> <td colspan="3">Récolte 2008</td> </tr>
Ainsi, je suis capable de conserver mes colspans et rowspans avec les expressions régulières suivantes :
$code = preg_replace( "#<td(.*?)(colspan=[\"\'].*?[\"\']).*?>#i", "<td $2>" , $code); $code = preg_replace( "#<td(.*?)(rowspan=[\"\'].*?[\"\']).*?>#i", "<td $2>" , $code);
Par contre mon soucis survient lorsqu'il n'y a pas de colspan / rowspan. J'essayais de trier avec l'expression régulière suivante
$code = preg_replace( "#<td(.*?)>#i", "<td>" , $code);
Mais évidemment, ça retire mes rowspan et colspan.
J'aimerais donc savoir comment paufiner une requête afin que ça fasse exactement ce que je veux. (Il ne manque peut-être qu'une simple petite chose mais j'ignore quoi).
Merci d'avance
A voir également:
- [PHP] Reg-ex ; Nettoyage de balise
- Nettoyage pc lent - Guide
- Nettoyage mac - Guide
- Money manager ex - Télécharger - Bourse & Finance
- Nettoyage de disque - Guide
- Nettoyage - Guide
3 réponses
Sa fait longtemps que j'ai plus fais de Regex >.>
De mémoire je dirais:
Je suis pas du tout sur malheuresement
De mémoire je dirais:
$code = preg_replace( "#<td(.*?)([colspan=[\"\'].*?[\"\']]*).*?>#i", "<td $2>" , $code); $code = preg_replace( "#<td(.*?)([rowspan=[\"\'].*?[\"\']]*).*?>#i", "<td $2>" , $code);
Je suis pas du tout sur malheuresement
Bon, c'est pas optimisé, mais sa marche:
Edit: bon en fait sa marche pas.
$code = '<td sd sd colspan="2" fdfd rowspan="4" azer></td>'; $code = preg_replace( '#<td(.*)((colspan|rowspan)=[\"\'].*[\"\']).*((colspan|rowspan)=[\"\'].*[\"\'])(.*)>#i', "<td $2 $4>" , $code);
Edit: bon en fait sa marche pas.
Puisque les expressions régulières complexes ne sont pas faciles, j'ai inversé mon processus, au lieu de chercher à garder ce que je veux, j'élimine ce que je veux pas de cette façon :
Je retire aussi un caractère d'espacement avant chaque propriété sinon ça fait des balise avec des espaces vide comme ceci
C'est peut-être pas aussi efficace qu'une expression régulière complexe mais vu la difficulté de la réalisée, c'est une petite méthode simple.
D'ailleurs, si quelqu'un connait la solution, fonctionnelle, il me fera grand plaisir de l'appliquer.
Merci
$suppr=array('/[\s]{1}class=[\"\'].*?[\"\']/', '/[\s]{1}id=[\"\'].*?[\"\']/'); $code=preg_replace($suppr, '', $code);
Je retire aussi un caractère d'espacement avant chaque propriété sinon ça fait des balise avec des espaces vide comme ceci
<td >
C'est peut-être pas aussi efficace qu'une expression régulière complexe mais vu la difficulté de la réalisée, c'est une petite méthode simple.
D'ailleurs, si quelqu'un connait la solution, fonctionnelle, il me fera grand plaisir de l'appliquer.
Merci