[RESOLU] soustraction d'une chaîne (REGEX)

SamOliver
Invité n'ayant pas de compte PHPfrance

24 févr. 2015, 15:28

Bonjour

J'ai la chaîne suivante

Code : Tout sélectionner

<table:table-row table:style-name="Tableau3.2"> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P32">AB1</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB2</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB3</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB4</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB5</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.F2" office:value-type="string"> <text:p text:style-name="P21">AB6</text:p> </table:table-cell> </table:table-row>


J'aimerai soustraire la chaîne suivante :

Code : Tout sélectionner

<text:p text:style-name="P21">AB4</text:p>
sachant que P21 est une variable inconnue

Quand je fais

Code : Tout sélectionner

$reg1 = "#<text:p text:style-name=(.*)>AB4</text:p>#"; preg_match_all($reg1, $this->xml, $matches);
ça me retourne la chaîne entière, alors que je veux soustraire que la chaîne en question.

Code : Tout sélectionner

<text:p text:style-name="P21">AB4</text:p>

Merci d'avance pour votre aide.

Mammouth du PHP | 688 Messages

24 févr. 2015, 15:32

$matches[0] comprend la chaine entière, $matches[1], ce qu'il y a entre ()

SamOliver
Invité n'ayant pas de compte PHPfrance

24 févr. 2015, 15:40

Justement je fais comment pour avoir que la chaine que je recherche (pas toute la chaine) ?

SamOliver
Invité n'ayant pas de compte PHPfrance

24 févr. 2015, 15:48

en fait ele resultat que je recoit est le suivant

Code : Tout sélectionner

<text:p text:style-name="P32">AB1</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB2</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB3</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB4</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.A2" office:value-type="string"> <text:p text:style-name="P21">AB5</text:p> </table:table-cell> <table:table-cell table:style-name="Tableau3.F2" office:value-type="string"> <text:p text:style-name="P21">AB6</text:p>
Moi je veux juste la chaine

Code : Tout sélectionner

<text:p text:style-name="P21">AB4</text:p>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 févr. 2015, 16:21

Voici une regex qui devrait fonctionner sur la base de ce que tu as fait :
(<text:p text:style-name="[A-Z0-9]+">AB4</text:p>)
Tu peux la voir en action sur ton exemple ici :
https://regex101.com/r/jI1qE3/1
Quand tout le reste a échoué, lisez le mode d'emploi...

SamOliver
Invité n'ayant pas de compte PHPfrance

24 févr. 2015, 17:40

Merci bien pour votre aide, j'en suis tres reconnaissant :)