PHP PCRE解析javascript代码

I'm trying to parse a javascript code that generates a map, so that I can get the coordinates that it's using (the first 2 long values inside the following example).

The example :

new OpenLayers.LonLat(-9.2009313718432200, 38.6318891148480000), 9);

The function I'm using is as follows :

preg_replace('/LonLat\(([0-9 ,\-\.^\)]{0,})\)/i', '$1', $coords);

Got no success so far. Any suggestions?

Try a regex something like this:

preg_match('/LonLat\(([+-]?\d+(\.\d+)),\s*([+-]?\d+(\.\d+))/', $coords, $matches);
$longitude = $matches[1];
$latitude  = $matches[3];

My PHP is a bit rusty so YMMV. Your expression for matching a floating point number is far more convoluted that it needs to be, just a simple "optional sign followed by some digits followed by a decimal point followed by some more digits" is sufficient:

[+-]?\d+(\.\d+)

And don't forget to skip $matches[2] and $matches[4], those will contain the inner capture groups (i.e. ".20093137..." and ".6318891..." in your example).

And don't bother with preg_replace() for things like this, you're just looking for things, you're not trying to change anything. You could use preg_replace() but then you'd have to parse the post-replacement value again to get the two pieces out.