2016-11-20 1 views
0

페이지가로드 될 때 URL 또는 다른 소스에서 항목 ID를 가져올 모든 항목에 동적으로 사용할 수있는 이베이 항목 템플릿을 만들려고합니다. 그런 다음 API 쿼리를 수행하여 템플릿의 항목 사양을 채 웁니다. 이 필드를 채우는 쉬운 방법이 있다면 언제든지 공유해주십시오.하지만 현재 테스트를 위해이 URL에서 상품 ID를 가져 오려고합니다. 항목 ID가 난 다음에 채우기 위해 필요한 정보를 얻기 위해 내 API 호출에 ID를 사용할 수 있습니다URL 또는 기타 소스에서 이베이 항목 번호를 얻는 방법

281734025776

입니다

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을 미리 알지 못하고 브라우저에서 가져와야하는 경우 작동합니까? –

답변

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

나는 2 개의 다른 방법으로 URL의 ID를 표시하는 Ebay 디스플레이가 # 또는로 끝날 수 있으므로 시도를 줄 수있는 답변을 업데이트했습니다. 그래서 위의 코드에서 다루었 다. – Batman

0

그것은 (PHP/자바 스크립트) 정규 표현식 쉬운 일이다

.

매우 간단한 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은 선택 사항입니다. 대/소문자를 구분하지 않고 검색하도록 사용했습니다.

더 우아하고 바람직한 해결책은, 그렇지 않으면 결과 부울 false를 반환 함수에게 인수 $url이 항목의 유효 이베이의 URL을 때 이베이 항목의 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) 

자바 스크립트 정규식 기능 (예 : String.match() 등의 작업)이 패턴을 사용하여 이베이 상품의 ID를 추출합니다.


당신이 당신의 입력 URL을 대신 표현을 다음 ebay.com 도메인 사용에서 오는 있는지 확인 얻고 싶은 경우에

/\/itm\/.*?\/(\d+)/i 
. 자바 스크립트

참고

  • /^(?:https?:\/\/)?(?:www\.)?ebay\.com\/itm\/.*?\/(\d+)/i PHP
  • 에 대한

    • ~^(?:https?://)?(?:www\.)?ebay\.com/itm/.*?/(\d+)~i :이 패턴은 두 이상, 또는 어떤 www. 접두사로 httphttps 프로토콜을 ebay.com 도메인의 URL을 허용 (또는 없음). 자바 스크립트 정규식 패턴은 PHP와 함께 사용하는 것이 유효하지만 그 반대는 사용할 수 없습니다. 패턴 구분 기호 /은 JavaScript와 함께 사용되지만 PHP에서는 구분 기호 ~이 유효하지 않습니다 (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/...

      01,

      다른 솔루션보다 REGEX가 필요한 이유는 무엇입니까?

      정규 표현식은 일부 패턴을 텍스트와 대조하는 데 매우 유용합니다. 디버깅에 조금 어려워 지지만 코드를 간단하고 읽기 쉽게 유지합니다. 이 특정 경우, eBay가 자신의 URL 패턴을 변경하기로 결정했을 때이 작은 조각의 정규식을 업데이트해야합니다. 그렇지 않으면 문자열 조작을위한 함수 (예 : explode, substr, str_replace 등)를 사용할 때 전체 코드를 수정하거나 새 코드로 다시 작성해야 할 수 있습니다.

      거의 모든 프로그래밍 언어는 현재 일부 정규식 라이브러리 (예 : PCRE, RE2, JRegex 등)를 지원합니다. 이 라이브러리는 regex 엔진이라고도합니다.

      Enjoy;)

    관련 문제