Es ist leichte Aufgabe für reguläre Ausdrücke (mit PHP/JavaScript).
Sehr einfache PHP-Lösung (wenn Sie eine URL kennen) wäre so.
$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
Regulärer Ausdruck Muster ~/itm/.*?/(\d+)~i
einfach durchsucht Ihre Eingabezeichenfolge für '/itm/{SOMETHING}/{ROW_OF_DIGITS}'
und extrahiert {ROW_OF_DIGITS}
Teil nur (wenn gefunden). Der Modifikator i
am Ende des Musters ist optional. Ich habe es verwendet, um die Groß-/Kleinschreibung bei der Suche zu berücksichtigen.
elegante und bevorzugte Lösung wäre mit Funktion
function GetEBayId($url) {
if (is_string($url))
preg_match('~/itm/.*?/(\d+)~i', $url, $m);
return isset ($m[1]) ? $m[1] : false;
}
PHP-Funktion GetEBayId($url)
eBay item ID zurückzugibt, wenn Argument $url
gültig URL des Artikels eBay, sonst wird es boolean false
als Ergebnis zurück.
Jetzt können Sie leicht gegen mehrere Eingänge testen ...
$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));
Beispiel über Ausgänge:
string '112204342340' (length=12)
string '' (length=12)
string '122233680189' (length=12)
boolean false
string '132002578508' (length=12)
string '132002811098' (length=12)
Wenn mit JavaScript Regex Funktionen arbeiten (wie String.match()
) Verwenden Sie dieses Muster, um die ID des eBay-Artikels zu extrahieren.
/\/itm\/.*?\/(\d+)/i
Wenn Sie sicherstellen wollen, dass Ihre Eingabe von URLs aus ebay.com Domain Einsatz kommen stattdessen folgende Ausdrücke.
~^(?:https?://)?(?:www\.)?ebay\.com/itm/.*?/(\d+)~i
für PHP
/^(?:https?:\/\/)?(?:www\.)?ebay\.com\/itm\/.*?\/(\d+)/i
für JavaScript
Hinweis: Diese Muster akzeptieren URLs von ebay.com Domain mit oder ohne www.
Präfix, über beide, http
und https
Protokolle (oder keiner). Das JavaScript-Regex-Muster ist für die Verwendung mit PHP gültig, nicht umgekehrt. Das Mustertrennzeichen /
, das mit JavaScript verwendet wird, ist auch mit PHP gültig, aber das Trennzeichen ~
ist nicht für JavaScript gültig (JS benötigt einen Schrägstrich, der als Trennzeichen verwendet werden kann; PHP akzeptiert auch einige andere Zeichen).
Mit obigen Ausdrücken werden nur URL-Muster als gültig akzeptiert.
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/...
Warum REGEX über andere Lösungen?
Reguläre Ausdrücke sind ein sehr mächtiges Werkzeug, wenn es darum geht, einige Muster mit dem Text abzugleichen. Sie sind etwas schwieriger zum Debuggen, aber sie halten Ihren Code einfach und lesbar. In diesem speziellen Fall, wenn (und wenn) eBay entscheidet, ihr URL-Muster zu ändern, müssen Sie nur dieses kleine Stück Regex aktualisieren. Andernfalls müssten Sie bei der Verwendung von Funktionen zur Zeichenfolgenbearbeitung (wie explode
, substr
, str_replace
usw.) wahrscheinlich Ihren gesamten Code ändern oder ihn sogar mit einem neuen Code umschreiben.
Fast alle Programmiersprachen heute einige regex Bibliothek unterstützen (wie PCRE
, RE2
, JRegex
, etc). Diese Bibliotheken werden auch als Regex-Engines bezeichnet.
Enjoy;)
Mit welcher Sprache und wo? Frage braucht viel mehr Klärung für jedermann zu helfen – charlietfl
Ich gehe davon aus, was ich gelesen habe, dass Sie den ID-Teil von der URL erhalten möchten. Ich habe gerade eine detaillierte Antwort über das gleiche hier http://stackoverflow.com/a/40700130/2584392 geschrieben. Sie können auch die Codes dort verwenden :) – georoot
Wow, das ist so über mein Verständnis. Funktioniert das, wenn ich die URL nicht im Voraus kenne und sie aus dem Browser holen muss? –