2016-11-20 5 views
0

ページが読み込まれたときにアイテムIDをURLまたは別のソースから引き出すすべてのアイテムに対して動的に使用できるイーベイアイテムテンプレートを作成しようとしています次に、APIクエリを実行して、テンプレート内のアイテム仕様を入力します。これらのフィールドを簡単に入力できる場合は、お気軽に共有してください。ただし、現在、このURLからアイテムIDを取得しようとしています。アイテムIDがURLまたは他のソースからイーベイアイテム番号を取得する方法

私はその後、私の中で埋めるために必要な情報を得るために、私のAPIコールでIDを使用することができます

ある

http://www.ebay.com/itm/4-American-Racing-TORQUE-THRUST-2-II-Wheels-Torq-17x8-VN5157866-5x4-5-4-75-BS/281734025776#rpdCntId

テンプレート。

このトピックに示すことができる光があれば、事前にお知らせください。私はこの特定の質問に対して他の答えを見つけることができませんでした。

+2

どの言語を使用していますか?質問は誰でも助けてくれるようもっと明確にする必要があります – charlietfl

+0

私はあなたがURLからID部分を取得したいと思っていると仮定しています。私はちょうどここで同じことについての詳細な答えを書いたhttp://stackoverflow.com/a/40700130/2584392。そこにコードを使用することもできます:) – georoot

+0

うわーこれは私の理解の上です。もし私がURLを事前に知らず、ブラウザーからURLを取得する必要がある場合、それは機能しますか? –

答えて

0

PHPでこれを行うには、これは多くのEbayリンクでテストされています。

Demo

<?php 

$response = "http://www.ebay.com/itm/4-American-Racing-TORQUE-THRUST-2-II-Wheels-Torq-17x8-VN5157866-5x4-5-4-75-BS/281734025776#rpdCntId"; 
$display = explode('/', $response); 
$iDvalue = $display[5]; 

if(strpos($iDvalue, "#") !== false) { 
    $display = explode('#', $iDvalue); 
} 

else{ 
    $display = explode('?', $iDvalue); 
} 

$EbayIDValue = $display[0]; 
echo $EbayIDValue; 
?> 
+0

残念ながら私はIDを事前に知っていないか、それを渡すことができるように、自分自身のページまたはURLからIDを取得する必要があります。 –

+0

私は試してみることができます答えを更新しました!!あなたのURLのIDを表示する2つの異なる方法でEbayディスプレイは#またはで終わるかもしれないので?上記のコードの両方で処理されます。 – Batman

0

それは(PHP/JavaScriptで)正規表現のための簡単な作業です。

非常に単純なPHPソリューション(あなたがURLを知っているとき)は、このようになります。

$url = "http://www.ebay.com/itm/4-American-Racing-TORQUE-THRUST-2-II-Wheels-Torq-17x8-VN5157866-5x4-5-4-75-BS/281734025776#rpdCntId"; 
    preg_match('~/itm/.*?/(\d+)~i', $url, $m); 
    $id = $m[1]; 

    echo $id; // outputs: 281734025776 

正規表現パターン~/itm/.*?/(\d+)~iは単に'/itm/{SOMETHING}/{ROW_OF_DIGITS}'のためにあなたの入力文字列をスキャンし、(見つかった場合)のみ{ROW_OF_DIGITS}一部を抽出します。パターンの最後の修飾子iはオプションです。私はそれを使って大文字と小文字を区別しない検索を行いました。

よりエレガントで望ましい解決策は、引数$urlがそうでなければ、それは結果として、ブールfalseを返し、アイテムの有効eBayのURLであるとき、eBayの項目のIDを返すGetEBayId($url)機能

function GetEBayId($url) { 
     if (is_string($url)) 
      preg_match('~/itm/.*?/(\d+)~i', $url, $m); 
     return isset ($m[1]) ? $m[1] : false; 
    } 

PHP関数を使用しています。あなたは簡単に複数の入力に対してそれをテストすることができます今すぐ


...出力上記

$urls = array (
     "http://www.ebay.com/itm/2013-Harley-Davidson-Touring-/112204342340?forcerrptr=true&hash=item1a1fe66444:g:wDUAAOSwgZ1Xv6xq&item=112204342340", 
     "http://www.ebay.com/itm/1956-Harley-Davidson-Touring-/?forcerrptr=true&hash=item1c75363d5a:g:dkMAAOSw0OBYKP9A&item=", 
     "http://www.ebay.com/itm/2010-Harley-Davidson-Touring-/122233680189?forcerrptr=true&hash=item1c75b1f13d:g:HFIAAOSwNRdX9tcg&item=122233680189", 
     "http://stackoverflow.com/", 
     "http://www.ebay.com/itm/2004-Harley-Davidson-Touring-/132002578508?forcerrptr=true&hash=item1ebbf7804c:g:aOEAAOSwal5YKPHd&item=132002578508", 
     "http://www.ebay.com/itm/2015-Harley-Davidson-Touring-/132002811098?forcerrptr=true&hash=item1ebbfb0cda:g:AM4AAOSwB09YD2Wv&item=132002811098" 
    ); 

    foreach ($urls as $url) 
     var_dump (GetEBayId($url)); 

例:

string '112204342340' (length=12) 
string '' (length=12) 
string '122233680189' (length=12) 
boolean false 
string '132002578508' (length=12) 
string '132002811098' (length=12) 

JavaScriptの正規表現の機能(例えばString.match()などでの作業)このパターンを使用して、eBayアイテムのIDを抽出します。

/\/itm\/.*?\/(\d+)/i 

あなたの入力URLが代わりに式を以下ebay.comドメインの使用から来ていることを確認してください取得したい場合。 JavaScriptの

  • /^(?:https?:\/\/)?(?:www\.)?ebay\.com\/itm\/.*?\/(\d+)/i PHP
  • ため

    • ~^(?:https?://)?(?:www\.)?ebay\.com/itm/.*?/(\d+)~iは:これらのパターンは、両方の上に、または無www.プレフィックスでhttphttpsプロトコルをebay.comドメインからURLを受け入れる(またはなし)。 JavaScriptの正規表現パターンはPHPで使用するのに有効ですが、その逆はできません。パターンデリミタ/はJavaScriptでも使用できますが、デリミタ~はJavaScriptには無効です(JSではスラッシュを区切り文字として使用する必要がありますが、PHPではいくつかの文字も使用できます)。

      上記の式を使用すると、以下のURLパターンのみが有効となります。

      • http://www.ebay.com/itm/...
      • https://www.ebay.com/itm/...
      • http://ebay.com/itm/...
      • https://ebay.com/itm/...
      • www.ebay.com/itm/...
      • ebay.com/itm/...

      なぜREGEXは他のソリューションより優れていますか?

      正規表現は、一部のパターンとテキストの照合に非常に役立ちます。デバッグには少し難しくなりますが、コードをシンプルで読みやすくしています。この特定のケースでは、eBayがURLパターンを変更することを決定した場合、この小さな正規表現を更新するだけです。そうでない場合は、文字列操作用の関数(explodesubstrstr_replaceなど)を使用するときは、コード全体を変更したり、新しいコードで書き直す必要があります。

      現在、ほぼすべてのプログラミング言語は、一部の正規表現ライブラリ(PCRERE2JRegexなど)をサポートしています。これらのライブラリはregexエンジンとも呼ばれます。

      お楽しみください;)

    関連する問題