Extraire une partir d'URL (ou URI)

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Extraire une partir d'URL (ou URI)

    Bonjour,
    J'ai besoin d'extraire une partie d'url entre deux points précis.
    Voici par exemple l'URL
    https://www.monsite/page/164-test
    164 est l'ID de la page, c'est cette id dont j'ai besoin. Donc entre / qui suit page et le tiret -

    J'ai penser localiser le début de la chaîne à extraire puis la fin, mais ensuite je ne vois pas comment faire.
    Code PHP:
    $mystring $_SERVER['REQUEST_URI'];
    $findme   'page/';
    $pos strpos($mystring$findme);
    echo 
    " - ";
    echo 
    $mystring;
    echo 
    " - ";
    echo 
    $pos 5// Affiche la position du premier caractère qui suit de la chaîne "pages/"

    $tiret   '-';
    $pos strpos($mystring$tiret);
    echo 
    $pos;// Affiche la position du tiret. 
    Quelqu'un aurait-il une idée ?

    Cordialement.

    Eric
    Dernière édition par Agrepe à 03/10/2018, 11h13

  • #2
    Bonjour,
    question bête mais pourquoi tu ne chopes pas l'id directement au lieu d'aller le chercher dans l'url ?
    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer
    Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

    Commentaire


    • #3
      Bonjour Eric,

      La version PHP pur est :
      Code PHP:
      $s 'https://www.monsite/page/164-test';
      $posdeb strrpos($s'/') + ;
      $posfin strpos($s,'-',$posdeb);
      echo 
      substr($s$posdeb$posfin-$posdeb); 
      UP, le plugin universel à découvrir sur https//up.lomart.fr
      bgMax
      , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

      Commentaire


      • #4
        Un truc très bien pour tester ses codes PHP : http://phptester.net/
        Colle le code ci-dessus et tu verras le résultat

        C'est comme cela que je teste mes routines 'pur php' avant des les intégrer
        UP, le plugin universel à découvrir sur https//up.lomart.fr
        bgMax
        , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

        Commentaire


        • #5
          Bonjour,
          En fait j'ai procédé autrement, j'ai effectivement "choppé" l'id directement comme le suggère Manu.
          J'ai fait:
          Code PHP:
          $LID JRequest::getVar('id'0'''int');
                  
          $page ES::page($LID);
                  echo 
          $page->getName(); 
          Merci pour tout.

          Bien cordialement.

          Eric

          Commentaire


          • #6
            Pour vite tester du php je préfère https://github.com/websiteduck/Run-Php-Code que j'installe sur mon localhost.
            lomart aime ceci.
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire


            • #7
              Merci Christophe,

              Je cherchais ça depuis un moment
              En plus, elle permet d'utiliser des fonctions comme pathinfo qui sont bloquées par sécurité.
              L'autre a l'avantage d'être sans installation
              UP, le plugin universel à découvrir sur https//up.lomart.fr
              bgMax
              , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

              Commentaire


              • #8
                Salut

                Une approche :

                Code PHP:
                <?php

                $url 
                'https://www.monsite/page/164-test-2';
                $last basename($url);

                preg_match('~[^\-]*~'$last$match);

                echo 
                $match[0];
                J'utilise basename qui va traiter l'URL comme un nom de fichier et me retourner '164-test-2'

                Cela fait, j'isole tout qui se trouve avant le premier -

                $match[0] reprend alors l'ID.

                Mon code ne va pas se faire avoir avec p.ex.

                Code PHP:
                $url 'https://www.mon-site/page/164-test-2'
                puisqu'il extrait d'abord la dernière partie et donc reprendra bien l'alias.
                Christophe (cavo789)
                Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X