[RegExp] Traitement d'un texte - Trouver les urls
Bonjour,
Je suis assez mauvais en Regexp du coup, j'en ai bricolé une qui marche que moyennement.
J'ai un texte avec des urls. J'aimerais récupérer l'ensemble des URLs qui commence par Location: (et rien d'autre).
Le problème avec mon script c'est que je récupère aussi l'url qui commence avec un préfixe tel que X-XRDS-Location et ça je ne veux pas. C'est très gênant, si vous pouviez m'aider à l'exclure ça serait top.
Code:
1 2 3 4 5 6 7 8
| $data = "Location: https://ww.google.fr
Location: https://www.yahoo.fr/news/
Location: https://www.boncoin.fr/annonces/pages.php?_utm=[data]
Location: https://www.netflix.fr
Toto: https://www.msn.fr
X-XRDS-Location: https://wwww.test.com";
preg_match_all('#Location: [^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $data, $match);
var_dump($match[0]); |
Résultat:
array(5) {
[0]=> string(30) "Location: https://ww.google.fr"
[1]=> string(36) "Location: https://www.yahoo.fr/news/"
[2]=> string(62) "Location: https://www.boncoin.fr/annonces/pages.php?_utm=[data"
[3]=> string(32) "Location: https://www.netflix.fr"
[4]=> string(31) "Location: https://wwww.test.com"
}
Après en moins bloquant, j'ai 2 questions bonus.
- pour l'exemple https://www.boncoin.fr/annonces/pages.php?_utm=[data] je récupère que https://www.boncoin.fr/annonces/pages.php?_utm=[data. Le dernier caractère est tronqué, je ne sais pas trop pourquoi. Si vous avez une idée..
- Dans $match le récupère l'ensemble des urls préfixés de Location:. En soit j'ai pas besoin de Location:, je le tronque manuelle ensuite par un substring mais je pense qu'en regexp, il est possible d'exclure le mot clef de détection. Enfin c'est que je pense :)