[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
- Nettoyage de disque - Guide
- Money manager ex - Télécharger - Bourse & Finance
- 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
