+ elseif ($this->hasEngine('presto')) {
+ // Opera < 8
+ if (preg_match('/Opera\/[^\(]+ \((?:X11; )?([^;]+)[^\)]+\) +\[([a-z_-]+)\]/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }
+ elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; MSIE [^;]+; (?:X11; )?([^;\)]+)[^\)]*\) Opera [^ ]+\s+\[([a-z_-]+)\]/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }
+ elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+\) Opera [^ ]+\s+\[([a-z_-]+)\]/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }
+ // Opera mini
+ elseif (preg_match('/Opera\/([^\(]+) \((?:X11; )?([^;]+); Opera Mini; ([a-z_-]+); /i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = null;
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = $regs[3];
+ }
+ elseif (preg_match('/Opera\/([^\(]+) \((?:X11; )?([^;]+); Opera Mini\/[^;]+; ([a-z_-]+); /i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $regs[1];
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = $regs[3];
+ }
+ // Opera >= 8
+ elseif (preg_match('/Opera\/[^\(]+ \((?:X11; )?([^;]+); [^\)]+; ([a-z_-]+)\)/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }
+ elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; MSIE [^;]+; (?:X11; )?([^;]+); ([a-z_-]+)\) Opera [^ ]+/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }
+ elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+)\) Opera [^ ]+/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }
+ // Opera 9 Firefox-spoofing
+ elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+); rv:([^\);]+)\) Gecko\/\d+ Firefox\/[0-9a-zA-Z\.+]+ Opera [^ ]+/i', $this->uastring, $regs)) {
+ $this->uadata['eng_version'] = $this->getVersion();
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ }