それは(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.
プレフィックスでhttp
とhttps
プロトコルを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パターンを変更することを決定した場合、この小さな正規表現を更新するだけです。そうでない場合は、文字列操作用の関数(explode
、substr
、str_replace
など)を使用するときは、コード全体を変更したり、新しいコードで書き直す必要があります。
現在、ほぼすべてのプログラミング言語は、一部の正規表現ライブラリ(PCRE
、RE2
、JRegex
など)をサポートしています。これらのライブラリはregexエンジンとも呼ばれます。
お楽しみください;)
どの言語を使用していますか?質問は誰でも助けてくれるようもっと明確にする必要があります – charlietfl
私はあなたがURLからID部分を取得したいと思っていると仮定しています。私はちょうどここで同じことについての詳細な答えを書いたhttp://stackoverflow.com/a/40700130/2584392。そこにコードを使用することもできます:) – georoot
うわーこれは私の理解の上です。もし私がURLを事前に知らず、ブラウザーからURLを取得する必要がある場合、それは機能しますか? –