Bonjour,

Bonjour,

Je cherche à extraire des données du site zeturf dont j ai sauvegardé les pages
le code de ce qui m interesse est celui-ci

<tr class="item">
        <td class="numero">
                <a href="https://www.zeturf.fr/fr/reunion/2020-01-01/R1-vincennes" class="tld-fr-only">R1</a>
                <a href="https://www.zeturf.fr/fr/reunion/2020-01-01/R1-vincennes" class="hide-tld-fr">FR2</a>

Ici je voudrais extraire R1-vincennes
j ai donc essayé *https:\/\/www.zeturf.fr\/fr\/reunion\/2020-01-01\/R?** mais ça ne trouve la première occurence alors que j aiemrais que ça trouve ce qui est au dela jusqu'au "
J ai mis ça ici https://regex101.com/r/oxBJXP/1

Si l un d entre vous pouvait m aider, je l en remercie par avance

6 réponses


Balsakup
Réponse acceptée

Salut,

Il faut ajouter les délimiteurs au regex et un g à la fin pour faire une capture globale.

$pattern = '/https:\/\/www.zeturf.fr\/fr\/reunion\/2020-01-01\/(R[^"]*)/g';

soit plus explisite

Bon j eaasyais de montrer que je cherchais en expliquant mais à priori je m explique comme une patate alors voila...
Je parse une page HTML en essayant d extraire R1-vincennes sur le lien suivant

<a href="https://www.zeturf.fr/fr/reunion/2020-01-01/R1-vincennes" class="tld-fr-only">R1</a>

c est à dire tout ce qui est apres https://www.zeturf.fr/fr/reunion/2020-01-01/ et avant le " fermant. car ce peut être aussi R2-Deauville...
merci

Je te remercie mais comment faire pour que cela me trouve toutes les occurences de la chaine pke là ça ne me sort que la 1ere.
J ai modifié ainsi (https:\/\/www.zeturf.fr\/fr\/reunion\/2020-01-01\/(R[^"])) et du coup ça m extrait, dans un 2eme groupe R1-vincennes mais toujours la seule 1ere occurence.
merci de ton aide

J essayais la regex en ligne...
Voici mon code mais j ai une erreur : Warning: preg_match_all(): Delimiter must not be alphanumeric or backslash

$strResult = implode("",file("https://www.zeturf.fr/fr/resultats-et-rapports/2020-01-01/turf"));
$matches = array();
$pattern = 'https:\/\/www.zeturf.fr\/fr\/reunion\/2020-01-01\/(R[^"]*)';
preg_match_all($pattern, $strResult, $matches);
var_dump($matches);

Merci pour ton aide car je débute et les regex sont tout sauf evidentes...

Merci pour ta réponse.
En fait le g n' est necessaire que quand on utilise "preg_match" mais pas quand on utilise preg_match_all.
Ce qui me manquait étaient les / de début et fin d 'expression.
Tout fonctionne parfaitement maintenant, merci à vous tous