/** * Test the getters and setters with unicode (UTF-8) arguments. * */ public function testUnicodeGettersAndSetters() { $queryArray = array('wört' => 'schlossbrücker', 'café' => 'sûr=!', '←ĊÃÂşŝőÐΞφ❡⠿' => '㈱グカ゚ㄤㄦㄜㄠ', 'a̢̱̠̼̐͊͋͗ͤ͑͘͝͡' => 'b̜̭̞̱̲̰̋̌̿͘'); $queryAsString = 'wört=schlossbrücker&café=sûr=!&←ĊÃÂşŝőÐΞφ❡⠿=㈱グカ゚ㄤㄦㄜㄠ&a̢̱̠̼̐͊͋͗ͤ͑͘͝͡=b̜̭̞̱̲̰̋̌̿͘'; $path = 'b̜̭̞̱̲̰̋̌̿͘/őÐΞφ/㈱グカ゚ㄤ/café'; $fragment = 'jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢՊ'; $uri = new HTTPURI('https', 'example.net', $path, $queryArray, $fragment); $this->assertEquals('https', $uri->getScheme()); $this->assertEquals('example.net', $uri->getAuthority()); $this->assertEquals('/' . $path, $uri->getPath()); $this->assertEquals($queryArray, $uri->getQueryAsArray()); $this->assertEquals($queryAsString, urldecode($uri->getQueryAsString())); $fullURI = urldecode($uri->get()); $this->assertEquals($fullURI, "https://example.net/{$path}?{$queryAsString}#{$fragment}"); $uri->setPath('グカ゚café/ŝőa̢̱̠̼̐͊͋͗ͤ͑͘͝͡ÐΞ/←ĊÃ/'); $uri->setQuery(array('1' => 'jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢ')); $uri->setFragment('schlossbrücker'); $this->assertEquals('/グカ゚café/ŝőa̢̱̠̼̐͊͋͗ͤ͑͘͝͡ÐΞ/←ĊÃ/', $uri->getPath()); $this->assertEquals(array('1' => 'jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢ'), $uri->getQueryAsArray()); $this->assertEquals('1=jdf̸̪̫̫̮͐̽̓͂dЄӦӥӢ', urldecode($uri->getQueryAsString())); $this->assertEquals('schlossbrücker', $uri->getFragment()); $uri->setPath('/%E3%82%B0%E3%82%AB%E3%82%9Acaf%C3%A9/%E2%86%90%C4%8A%C3%83/', FALSE); $uri->setFragment('f%C3%A4hrrader', FALSE); $this->assertEquals('/グカ゚café/←ĊÃ/', $uri->getPath()); $this->assertEquals('fährrader', $uri->getFragment()); }