IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

De preg_match_all en PHP à match en Ruby


Sujet :

Ruby

  1. #1
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut De preg_match_all en PHP à match en Ruby
    Bonjour,

    Hier j'ai eu une idée, transformer un script PHP en Ruby... (userAgent = Mozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.339)
    J'ai réussi à faire pas mal de chose. Voici un des problèmes qui me restent.

    ---

    Ce bout de code PHP me donne un jolie tableau :
    preg_match_all(
    	'/(?P<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|Baiduspider|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+) (?:\)?;?) (?:(?:[:\/ ])(?P<version>[0-9A-Z.]+)|\/(?:[A-Z]*))/ix',
    	$userAgent, $result);
    
    Array
        [0] => Array
                [0] => AppleWebKit/534.10
                [1] => Chrome/8.0.552.339
        [browser] => Array
                [0] => AppleWebKit
                [1] => Chrome
        [1] => Array
                [0] => AppleWebKit
                [1] => Chrome
        [2] => Array
                [0] => 
                [1] => 
        [3] => Array
                [0] => 
                [1] => 
        [version] => Array
                [0] => 534.10
                [1] => 8.0.552.339
        [4] => Array
                [0] => 534.10
                [1] => 8.0.552.339
    
    En résumé cela donne :

    array("browser" => array("AppleWebKit", "Chrome"), "version" => array("534.10", "8.0.552.339"))
    
    ---

    Maintenant il s'agit de faire la même chose en Ruby.
    Voici ce que j'ai tenté pour le moment (à noter que je ne comprends à peu prêt rien à partir du collect, mais bon) :

    result = userAgent.to_enum(:scan,
    	/(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|Baiduspider|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+) (?:\)?;?) (?:(?:[:\/ ])(?<version>[0-9A-Z.]+)|\/(?:[A-Z]*))/ix
    ).map { Regexp.last_match.names.collect{ |x| {x => $~[x]} }.reduce({}, :merge) }
     .reduce({}) { |h,pairs| pairs.each {|k,v| (h[k] ||= []) << v}; h }
    
    {"browser"=>["AppleWebKit", "Chrome"], "version"=>["534.10", "8.0.552.339"]}
    
    *EDIT* Et ça marche ! Je sais pas par contre si c'est vachement bien ou pas.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Utiliser String#scan semble être une meilleure idée.

  3. #3
    Membre régulier Avatar de luigifab
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    Ouép en effet, merci !

  4. #4
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Pour faire fonctionner ton script sans t'arracher les cheveux, Sinatra est très commode pour adapter des scripts de PHP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/01/2009, 22h49
  2. reecriture de code php en ruby
    Par mazraelle dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 14/05/2008, 17h25
  3. [AJAX] Portage de Ruby vers PHP
    Par GTJuanpablo dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 01/02/2008, 10h15
  4. Equivalent en delphi de preg_match_all en php
    Par sp2308 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/12/2007, 21h54
  5. Quel langage pour le Web ? C# ou Ruby ou PHP ?
    Par Dev_Michael dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 18/06/2007, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo