Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[PCRE] Question de pattern

1 réponse
Avatar
Serge
Bonjour,
J'ai un petit problème qui commence à m'énerver un peu ...
J'ai ça :

<step revision="3">
<date>070703</date>
<nature>a</nature>
<auteur>a</auteur>
</step>
<step revision="2">
<date>220503</date>
<nature>b</nature>
<auteur>b</auteur>
</step>
<step revision="1">
<date>220303</date>
<nature>c</nature>
<auteur>b</auteur>
</step>

je souhaiterais avoir :

Array (
[0] => Array (
[0]=>3
[1]=> <date>070703</date><nature>a</nature><auteur>a</auteur>
)
[1] => Array (
[0]=>2
[1]=> <date>220503</date><nature>b</nature><auteur>b</auteur>
)
[2] => Array (
[0]=>1
[1]=><date>220303</date><nature>c</nature><auteur>b</auteur>
)
)

Ou toute autre possibilité du moment que je peux recupérer le numéro de
revision et le contenu, même sous forme de tableau.

Ma pattern actuelle qui ne me donne pas le résultat escompté :
$preg = "/<step(.*?)>(.+)<\/step>/s";
preg_match_all($preg, $xml, $regs);

D'avance merci.

--
Serge

1 réponse

Avatar
P'tit Marcel
Serge écrivit:

J'ai ça :

<step revision="3">
<date>070703</date>
<nature>a</nature>
<auteur>a</auteur>
</step>

je souhaiterais avoir :

Array (
[0] => Array (
[0]=>3
[1]=> <date>070703</date><nature>a</nature><auteur>a</auteur>
)

Ma pattern actuelle qui ne me donne pas le résultat escompté :
$preg = "/<step(.*?)>(.+)</step>/s";
preg_match_all($preg, $xml, $regs);


Le masque est faux, l'ordre d'extraction par défaut de preg_match ne va
pas, enfin il faut se débarasser de la capture globale du masque (indice
0):

$preg = '`<step revision="([0-9]+)">(.+?)</step>`s';
preg_match_all($preg, $xml, $regs, PREG_SET_ORDER);
for($i=0;$i<sizeof($regs);$i++)
array_shift($regs[$i]);


eça
--
P'tit Marcel
statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/