J'ai des difficultés à faire faire à ma regex ce que je veux qu'elle fasse :(
Je veux que ma regex fasse les 2 choses suivantes :
- trouver l'ID qui est la prochaine section du chemin d'accès à l'URL juste après la correspondance du motif pour "marque" ou "profil".
- que de diviser le reste des parties du chemin d'accès à l'URL après l'ID en éléments distincts dans le tableau des correspondances, le nombre de parties du chemin d'accès à l'URL après l'ID peut varier de zéro à plusieurs et la barre oblique de fin n'est pas toujours présente.
J'ai réussi à faire fonctionner la première partie via :
<?php
$url = 'https://demo.com/show/profile/123/slug/etc/';
$pattern = '/\/(brand|profile)?\/([\d]+)/';
preg_match($pattern, $url, $matches);
var_dump($matches);
Ce qui fonctionne pour toutes ces chaînes de test :
https://demo.com/show/profile/123
https://demo.com/show/profile/123/
https://demo.com/show/profile/123/slug
https://demo.com/show/profile/123/slug/
https://demo.com/show/profile/123/slug/etc
https://demo.com/show/profile/123/slug/etc/
Mais je ne semble pas pouvoir résoudre la deuxième partie, même après avoir cherché une solution pendant des jours. Ma tentative la plus "réussie" jusqu'à présent est la suivante :
\/(brand|profile)?\/([\d]+)\/?(.*)?\/?
Ce modèle capture le reste du chemin d'accès à l'URL, y compris la barre oblique de fin de ligne lorsqu'elle est présente (en fait, je ne veux pas de barre oblique de fin de ligne).
J'ai le code pour la première partie disponible sur : phpliveregex.com/p/pMO
Quelqu'un peut-il m'aider à étendre cela avec le code de la deuxième partie ?
Merci beaucoup !