如何使用的preg_match来提取数据的URL()?(How to extract data fr

2019-10-19 04:44发布

我需要提取ASIN号码从Amazon的URL(10位的字母数字SKU)。 该网址总是在这些格式:

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})#

我还做了它,这样必须有在比赛前一个斜杠。

Answer 1:

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

简而言之: [A-Za-z0-9]采用任何字母数字字符,UCASE和LCASE都允许, {10}需要它正好10倍,和$要求它在所述字符串的末尾。 括号()定义哪些部分()你想回到在第三$matches输出变量。 最后,这一切都被包围2 #的正则表达式作为分隔符。

现在去阅读本页面的左侧边栏的每一篇文章 ,所以你可以自己做下一次:)



Answer 2:

除了尼尔斯的答案:

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

在壳体[text]是具有10个字符的字母数字。



文章来源: How to extract data from URLs using preg_match()?