static function substr($s, $start, $len = 2147483647) { /**/ if (extension_loaded('intl') && 'à ' === grapheme_substr('éà ', 1, -2)) { return PHP\Override\Intl::grapheme_substr_workaround62759($s, $start, $len); /**/ } else { return grapheme_substr($s, $start, $len); /**/ } }
/** * @covers Patchwork\PHP\Override\Intl::grapheme_substr * @covers Patchwork\PHP\Override\Intl::grapheme_substr_workaround62759 */ function testGrapheme_substr() { $c = "déjà"; $this->assertSame("jà", grapheme_substr($c, 2)); $this->assertSame("jà", grapheme_substr($c, -2)); // The next 3 tests are disabled due to http://bugs.php.net/62759 and 55562 //$this->assertSame( "jà", grapheme_substr($c, -2, 3) ); //$this->assertSame( "", grapheme_substr($c, -1, 0) ); //$this->assertSame( false, grapheme_substr($c, 1, -4) ); $this->assertSame("j", grapheme_substr($c, -2, -1)); $this->assertSame("", grapheme_substr($c, -2, -2)); $this->assertSame(false, grapheme_substr($c, 5, 0)); $this->assertSame(false, grapheme_substr($c, -5, 0)); $this->assertSame("jà", p::grapheme_substr($c, 2)); $this->assertSame("jà", p::grapheme_substr($c, -2)); $this->assertSame("jà", p::grapheme_substr($c, -2, 3)); $this->assertSame("", p::grapheme_substr($c, -1, 0)); $this->assertSame(false, p::grapheme_substr($c, 1, -4)); $this->assertSame("j", p::grapheme_substr($c, -2, -1)); $this->assertSame("", p::grapheme_substr($c, -2, -2)); $this->assertSame(false, p::grapheme_substr($c, 5, 0)); $this->assertSame(false, p::grapheme_substr($c, -5, 0)); $this->assertSame("jà", p::grapheme_substr_workaround62759($c, 2, 2147483647)); $this->assertSame("jà", p::grapheme_substr_workaround62759($c, -2, 2147483647)); $this->assertSame("jà", p::grapheme_substr_workaround62759($c, -2, 3)); $this->assertSame("", p::grapheme_substr_workaround62759($c, -1, 0)); $this->assertSame(false, p::grapheme_substr_workaround62759($c, 1, -4)); $this->assertSame("j", p::grapheme_substr_workaround62759($c, -2, -1)); $this->assertSame("", p::grapheme_substr_workaround62759($c, -2, -2)); $this->assertSame(false, p::grapheme_substr_workaround62759($c, 5, 0)); $this->assertSame(false, p::grapheme_substr_workaround62759($c, -5, 0)); }