2016-11-20 2 views
0

Ich versuche eine Ebay-Artikelvorlage zu erstellen, die ich dynamisch für alle meine Artikel verwenden kann, die die Element-ID aus der URL oder einer anderen Quelle ziehen, wenn die Seite geladen wird und führen Sie dann eine API-Abfrage aus, um die Elementspezifikationen in meiner Vorlage zu füllen. Wenn es eine einfachere Möglichkeit gibt, diese Felder zu füllen, können Sie gerne teilen, aber zur Zeit versuche ich, die Element-ID aus dieser URL zum Testen zu ziehen.Wie bekomme ich Ebay-Artikelnummer von URL oder andere Quelle

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

Wo die Artikel ID ist

Ich kann dann die ID in meinem API-Aufruf verwenden, um die benötigten Informationen zu erhalten zu füllen meine Vorlage.

Vielen Dank im Voraus für jedes Licht, das zu diesem Thema angezeigt werden kann. Ich konnte für diese spezielle Frage keine anderen Antworten finden.

+2

Mit welcher Sprache und wo? Frage braucht viel mehr Klärung für jedermann zu helfen – charlietfl

+0

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

+0

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? –

Antwort

0

In PHP können Sie dies tun, Dies ist für viele Ebay Links getestet.

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

Leider brauche ich es, um die ID von der Seite oder die URL selbst zu bekommen, da ich die ID nicht im Voraus wissen oder in der Lage sein werde, sie zu übergeben. –

+0

Ich habe die Antwort aktualisiert können Sie einen Versuch geben !!, Da Ebay Anzeigen in 2 verschiedenen Möglichkeiten zur Anzeige der URL-ID kann mit # enden oder? So behandelt beide in dem obigen Code. – Batman

0

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;)

Verwandte Themen