I’ve just lost a day because of this stupid browser_name_regex property:

e.g. “§^mozilla/5\.0 \(.*windows nt 6\.1.*wow64.*\) gecko/.* firefox/29\.0.*$§”

To replicate the issue and work around bloody ‘§’ character, please see below.
Whose idea was it to use that character?!

$ua = $_SERVER['HTTP_USER_AGENT'];
echo '$_SERVER[\'HTTP_USER_AGENT\'] => "' . $ua . '"
'; $browser = get_browser($ua); echo 'get_browser($ua) => <'.'pre>'; var_dump($browser); echo '
'; $json = json_encode($browser, JSON_PRETTY_PRINT); echo 'json_encode($browser) => <'.'pre>'; echo $json; echo '
'; echo 'json_last_error() => "' . json_last_error() . '"<'.'br />'; //echo 'unsetting $browser->browser_name_regex
'; //unset($browser->browser_name_regex); //or echo '$browser->browser_name_regex = utf8_encode($browser->browser_name_regex);
'; $browser->browser_name_regex = utf8_encode($browser->browser_name_regex); $json = json_encode($browser, JSON_PRETTY_PRINT); echo 'json_encode($browser) => <'.'pre>'; echo $json; echo '
'; echo 'json_last_error() => "' . json_last_error() . '"';