Bu çalışması gerekir:
preg_match_all('#http://www.amazon.com/([\w-]+/)?(dp|gp/product)/(\w+/)?(\w{10})#', $data, $matches);
Eğer bir dize ile JavaScript RegExp
kurucu kullandığınızda, tüm tersbölüler başka ile öncelenmedikçe gerekir. Bu PHP ile durum böyle değil.
Ve normalde diğer bazı sınırlayıcı kullanmak akıllıca Eğer regex için sınırlayıcı olarak /
kullanmak istiyorsunuz, ancak bu durumda gibi arama dizesindeki /
bir sürü var bu kadar bir ters eğik çizgi ile her çizgi kaçmak zorunda değilsiniz. Bu durumda ben bir sınırlayıcı olarak diyez işareti kullanılır.