views:

54

answers:

2

Hi, I have the following regular expression:

RegExp("http://www.amazon.com/([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})");

Written in javascript.

How can I get it to work with PHP's preg_match_all? What are the differences as far as regular expressions go?

+1  A: 

While I am not able to specifically answer your question with a pattern that solves your problem, I suggest that you take a look at this website which explains the differences between the Regular Expressions implementations of various programming languages.

phidah
+1  A: 

This should work:

preg_match_all('#http://www.amazon.com/([\w-]+/)?(dp|gp/product)/(\w+/)?(\w{10})#', $data, $matches);

When you use the JavaScript RegExp constructor with a string, all backslashes have to be escaped with another backslash. This is not the case with PHP.

And normally you would use / as the delimiter for the regex, but as in this case you have a lot of / in your search string it is wiser to use some other delimiter so you don't have to escape every slash with a backslash. In this case I used the pound sign as a delimiter.

Tatu Ulmanen