Bonjour,
J’ai une string telle que :
string = “http://www.ruby-lang.org/test?valeur1=ok&valeur2=non”
Et j’aimerais pouvoir récupérer la valeur associée à valeur1 ou
valeur2 (ok ou non) (ce qui reviendrait à faire params[:valeur1] dans
Rails.
Existe-t-il un moyen de faire cela ? J’ai cherché du côté de uri
(http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/index.html) mais je
n’ai pas trouvé… (sauf à utiliser une expression régulière)
Je vous remercie par avance,
Pierre
Une bête regex le fera très bien :
/^.valeur2=([^&])(?:&.*)?$/
Ensuite il suffit d’utiliser la méthode gsub de string :
ta_chaine_a_depouiller.gsub(/^.valeur2=([^&])(?:&.*)?$/, ‘$1’)
–
Michel B.
Pierre V. a écrit :
Bonjour,
J’ai une string telle que :
string = “http://www.ruby-lang.org/test?valeur1=ok&valeur2=non”
Et j’aimerais pouvoir récupérer la valeur associée à valeur1 ou
valeur2 (ok ou non) (ce qui reviendrait à faire params[:valeur1] dans
Rails.
On peut faire bourrin ?
h = {}
URI.parse(string).query.split(‘&’).map do |a| b, c = a.split(‘=’);
h[b.to_sym] = c; end
–
Martin C.
http://www.noremember.org | http://www.synbioz.com
Le 23 septembre 2008 15:23, Pierre a écrit :
J’ai une string telle que :
string = “http://www.ruby-lang.org/test?valeur1=ok&valeur2=non”
Et j’aimerais pouvoir récupérer la valeur associée à valeur1 ou
valeur2 (ok ou non) (ce qui reviendrait à faire params[:valeur1] dans
Rails.
Passe par ActionController::AbstractRequest.parse_query_parameters.
– Jean-François.
–
http://twitter.com/underflow_
merci
en corrigeant :
ta_chaine_a_depouiller.gsub(/^.valeur2=([^&])(?:&.*)?$/, $1) l’autre
ne marche pas chez moi
On Sep 23, 3:29 pm, “Michel B.” [email protected]
en corrigeant :
ta_chaine_a_depouiller.gsub(/^.valeur2=([^&])(?:&.*)?$/, $1) l’autre
ne marche pas chez moi
C’est comme le code des pirates, c’est plus un genre de direction
générale…
–
Michel B.
Les pirates sont de retours
J’ai utilisé un petit mix finalement :
ActionController::AbstractRequest.parse_query_parameters(URI.parse(url).query)
[‘valeur’]
Merci à tous !
On Sep 23, 3:51 pm, “Michel B.” [email protected]
This pastie demonstrates GC optimization with query parsing as an
example:
http://pastie.org/278425
Someone may find it useful.
On 24 sep, 11:17, Oleg A. [email protected] wrote:
This pastie demonstrates GC optimization with query parsing as an
example:
http://pastie.org/278425
Someone may find it useful.
Très bon exemple mais personnellement je n’utiliserais pas Chash dans
le inject(Chash), le memory leak/bug n’est pas loin:
A.parse_query(‘a=1&name=oleg&place=france&x=1’)
=> {“place”=>“france”, “name”=>“oleg”, “a”=>“1”, “x”=>“1”}
A::Chash
=> {“place”=>“france”, “name”=>“oleg”, “a”=>“1”, “x”=>“1”}
En particulier le rescue Chash va sortir des résultats imprévisibles
du cas précédent.
Non ?
On Sep 24, 2:49Â pm, “Renaud (Nel) Morvan” [email protected]
wrote:
A::Chash
=> {“place”=>“france”, “name”=>“oleg”, “a”=>“1”, “x”=>“1”}
Oops. My fault!
Here’s the fixed version:
http://pastie.org/278558
The difference is smaller, but still visible.