2014-01-08 1 views
1

Amazon URL에서 ASIN 숫자 (10 자의 영숫자 SKU)를 추출해야합니다. URL의 형식은 항상 다음과 같습니다.preg_match()를 사용하여 URL에서 데이터를 추출하는 방법은 무엇입니까?

http://www.amazon.com/gp/product/ASIN 
http://www.amazon.com/gp/product/[text]/ASIN 
http://www.amazon.com/o/ASIN 
http://www.amazon.com/dp/ASIN 
http://www.amazon.com/[text]/dp/ASIN 
http://www.amazon.com/[text]/dp/[text]/ASIN 

URL의 ASIN 번호 뒤에 대개 더 많은 디렉토리와 변수가 있습니다. 여기에 예를 들어 전체 URL입니다 :

http://www.amazon.com/Google-Nexus-Tablet-7-Inch-Black/dp/B00DVFLJDS/ref=sr_1_1?ie=UTF8&qid=1387937682&sr=8-1&keywords=nexus+7 

나는이 preg_match()을 사용하여 할 수있을 것 같아요,하지만 난 정규식 매우 새로운 야와 표현을 공식화하기 위해 아무것도하지 않습니다.

preg_match()과 (과) 가능한가요? 그렇지 않다면이 문제를 해결하기위한 최선의 방법은 무엇입니까?

업데이트 : 정규식에 독서와 ASIN는 URL 문자열 (이 거의없는있는)의 맨 끝에되지 않을 때 작동하는 답을 수정할 수 있었다 봤는데

:

#\/([A-Za-z0-9]{10})# 

또한 일치하기 전에 슬래시가 있어야합니다. 한마디로

+1

'preg_match()'와 함께 할 수 있습니다. 이제 몇 가지 기사를 읽고 어떻게하는지 배워보십시오. – zerkms

+1

예, 이것은 가능하며 하나의 개별 그룹만을 검색 할 때 그렇게 어렵지는 않습니다. 그러나 당신은 여전히 ​​이것을 스스로 연구해야합니다. 구체적인 시도로 어려움을 겪을 때 다시 물어보십시오. – kero

+1

@zerkms가 지적했듯이 이것이 가능합니다. 도움을 청하기 전에 적어도 시도를 해보길 기대합니다. –

답변

2
preg_match('#([A-Za-z0-9]{10})$#', $url, $matches); 

: [A-Za-z0-9]는 영숫자, UCASE 소요 LCASE 모두 허용, {10}는 그것을 정확히 10 시간을 필요로하며, $는 문자열의 끝에서 수를 필요로한다. 괄호 ()은 세 번째 $matches 출력 변수로 돌아갈 부품을 정의합니다. 마지막으로 정규식 구분 기호로 2 #으로 둘러싸여 있습니다.

지금 read every article in the left sidebar of this page은 그래서 당신은 닐스의 대답 이외에 자신에게 그것을 다음 시간 :

+2

'그냥해라'는 말 대신에 당신의 솔루션이 무엇을 설명하는지 명언. – Rottingham

1

을 수행 할 수 있습니다 이동합니다 경우 [text]에서

preg_match('#.*/([A-Za-z0-9]{10})/?$#', $url, $matches); 

10 개 문자 영숫자입니다.

관련 문제