Extraire une partie d'une url

Extraire une partie d'une url - PHP - Programmation

Marsh Posté le 27-01-2009 à 22:44:29    

Bonsoir,
 
Je cherche à extraire une partie d'une url.
 
<?php
$url = "https://192.168.1.100/site1/index.php?tg=dms/14/main&idx=frame&id_app=2";
...
 
N'étant pas très fort dans les regex, j'aimerai pouvoir extraire https://192.168.1.100/site1/ sachant que le nom du site (dans mon exemple site1) change dans l'url.
 
Merci bien pour votre aide.


Message édité par sneakz le 27-01-2009 à 22:45:10
Reply

Marsh Posté le 27-01-2009 à 22:44:29   

Reply

Marsh Posté le 27-01-2009 à 23:27:38    

$url_explode = explode($url, '/');
 
echo $url_explode[3];

Reply

Marsh Posté le 28-01-2009 à 08:29:15    

Merci fodger pour cette réponse.
 
La syntaxe est plutôt : $url_explode = explode('/',$url);
 
Mais ce n'est pas tout à fait ce que je veux dans la mesure où ici cela me retournera la sous-chaine numéro 3 soit site1 dans mon exemple.
Or je voudrais en sortie  https://192.168.1.100/site1/
 
Un moyen serait de concaténer les sous-chaines en y ajoutant / avec toute la difficulté à gérer le proto.

Reply

Marsh Posté le 28-01-2009 à 09:13:53    

J'ai pensé à ceci mais il y a peut-être plus simple :
 

Code :
  1. <?php
  2. $url = 'https://192.168.1.100/site1/index.php?tg=dms/14/main&idx=frame&id_app=2';
  3. $url = parse_url($url);
  4. $url = $url['scheme']."://".$url['host'].dirname($url['path'])."/";
  5. echo $url;
  6. ?>

Reply

Marsh Posté le 28-01-2009 à 11:49:17    

Code :
  1. function test_preg($data) {
  2.     if ( preg_match ( "@^(?:https://)?([^/]+)/([^/]+)@", $data, $matches) )
  3.         return $matches[0];
  4. }


"@^https://([^/]+)/([^/]+)/@" => Délimiteur. Ce qui est à l'intérieur, c'est l'expression régulière.
^https:// => Commence par https://
([^/]+) => N'importe quelle chaîne de caractères quelconques SAUF /
 
Donc, on prend une chapine qui commence par https://, qui est suivie d'une chaîne sans / (192.168.1.100), puis d'un /, et qui termine par une chaîne sans / (site1)

Reply

Marsh Posté le 28-01-2009 à 15:33:30    

sneakz a écrit :

Merci fodger pour cette réponse.
 
La syntaxe est plutôt : $url_explode = explode('/',$url);
 
Mais ce n'est pas tout à fait ce que je veux dans la mesure où ici cela me retournera la sous-chaine numéro 3 soit site1 dans mon exemple.
Or je voudrais en sortie  https://192.168.1.100/site1/
 
Un moyen serait de concaténer les sous-chaines en y ajoutant / avec toute la difficulté à gérer le proto.


 
dsl la fatigue :p. Dans ce cas, comme te le dis mac, les expressions régulières sont toutes indiquées.

Reply

Marsh Posté le 28-01-2009 à 16:15:38    

Merci bien macgawel pour cette fonction et surtout pour les éléments explicatifs.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed