2010-11-29 11 views
2

現在のページのURLを取得して(page:env( "caller")を使用して)、そのセクションを抽出します。例えばURLを正規表現で解析し、KRLの置換メソッド

、私は

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=cats 

を取得し、変数に

cats 

を割り当てます。

どのように私はKRLでこれを行いますか?

私は

url = page:env("caller"); 
query = url.replace("http://www\.google\.com/search\?sourceid=chrome&ie=UTF-8&q=", ""); 

を試してみましたが、それは単純にページ全体割り当て:変数のクエリ(例えばhttp://www.google.com/search?sourceid=chrome&ie=UTF-8&q=cats)にENV( "発信者")。

編集:jQueryソリューションも同様に機能します。

EDIT2:@JAM - あなたが投稿

select文が動作するようには思えません。私はhttp://www.google.com/search?q=catsでそれをテストし、それは起動しませんでした。 URLがページビューと一致しない場合や、一致するように見えるものがあるかどうかは不明です。

私はそれを置くアプリ:GoogleはそのURLを検索結果ページに着陸する多くの方法がありますので、

ruleset a835x36 { 
    meta { 
    name "regex testing2" 
    description << 
>> 
author "" 
logging on 
} 

rule get_query { 
    select when pageview "http://www.google.com/search.*(?:&|?)q=(\w+)(?:&|$)" setting(query) 
     notify("Query",query) with sticky = true; 
    } 
} 

はまた、私は、クエリで取得するより堅牢な方法を探していますhttp://www.google.com/search?q=catsのようには表示されません。たとえば、Googleに行って猫を検索すると、結果のURLにはhttp://www.google.com/webhp?hl=en#sclient=psy&hl=en&site=webhp&source=hp&q=cats&aq=f&aqi=&aql=&oq=&gs_rfai=&pbx=1&fp=8ac6b4cea9b27ecbと表示されます。しかし、私は正規表現で何かを解析することができると思います...

+0

を示しています。 jqueryソリューションをご希望の場合は、すでにjqueryタグを使用して回答があると思います。 –

答えて

5

2目的を達成するための2つの方法。前のブロックで

1)

pre { 
    queryInURL = page:url("query"); 
    q = queryInURL.replace(re/.*?q=(.*?)(?:$|&.*)/,"$1"); 
} 
  • ページ:URL(「クエリ」)は、文字列は、あなたがしたい特定のクエリパラメータをキャプチャするために置き換えるんURL
  • のパラメータの文字列全体をつかみます

全例のAppは、URLでテスト

をテスト済み - >http://example.com/?q=cats&wow=cool

alt text

ruleset a60x439 { 
    meta { 
    name "url query test" 
    description << 
     Getting the query from the current page URL 
    >> 
    author "Mike Grace" 
    logging on 
    } 

    rule get_query { 
    select when pageview ".*" 
    pre { 
     queryInURL = page:url("query"); 
     q = queryInURL.replace(re/.*?q=(.*?)(?:$|&.*)/,"$1"); 
    } 
    { 
     notify("Query",queryInURL) with sticky = true; 
     notify("q",q) with sticky = true; 
    } 
    } 

} 

2)ルールの選択式では道のJAMは、あなたがKRLについて尋ねられたので、我々はあなたがKNSサーバ側で処理を行いたいと仮定している

+0

愛はどこですか?私はちょうど私がそれが答えたいと思う方法にそれらに答える。 ; ) –

+1

ありがとう、マイク!私はページを認識していませんでした:url( "query")、それは多くの助けになります。 – user898763452

+0

助けてくれてうれしい!あなたに最高の運があります! –

4

これは、正規表現とキャプチャグループ(()の)を使用してselect文で実行できます。

select when pageview "http://www.google.com/search.*(?:&|?)q=(\w+)(?:&|$)" setting(query) 

正規表現はselect文を強力にします。それらを学ぶようにしてください! Hereは優れた正規表現(または正規表現)サイトです。