assertEquals( $string, StringUtil::urlToBase64( urldecode( StringUtil::base64ToUrl($string) ) ) ); } /** * @dataProvider data_testSlugify */ public function testSlugify($string, $expected) { $this->assertEquals($expected, $this->slugifyOld($string)); $this->assertEquals($expected, StringUtil::slugify($string)); } private function slugifyOld($string) { $a = ['á', 'ä', 'č', 'ď', 'é', 'ě', 'ë', 'í', 'ň', 'ó', 'ö', 'ô', 'ř', 'š', 'ť', 'ú', 'ů', 'ü', 'ý', 'ž', 'Á', 'Ä', 'Č', 'Ď', 'É', 'Ě', 'Ë', 'Í', 'Ň', 'Ó', 'Ö', 'Ô', 'Ř', 'Š', 'Ť', 'Ú', 'Ů', 'Ü', 'Ý', 'Ž', ' ', '.', '?', '&', '#', '@', '<', '>', '_', 'ľ', 'Ľ']; $b = ['a', 'a', 'c', 'd', 'e', 'e', 'e', 'i', 'n', 'o', 'o', 'o', 'r', 's', 't', 'u', 'u', 'u', 'y', 'z', 'A', 'A', 'C', 'D', 'E', 'E', 'E', 'I', 'N', 'O', 'O', 'O', 'R', 'S', 'T', 'U', 'U', 'U', 'Y', 'Z', '-', '-', '-', '-', '-', '-', '-', '-', '-', 'l', 'L']; $string = str_replace($a, $b, $string); $string = strtolower($string); $string = preg_replace('/[^a-z^A-Z^0-9^-]/i', '-', $string); $string = preg_replace('/-+/i', '-', $string); $string = preg_replace('/^-+/i', '', $string); $string = preg_replace('/-+$/i', '', $string); return $string; } public function data_testSlugify() { return [ ['Saka a Kabáty', 'saka-a-kabaty'], ['ťestík/+ { tEsT', 'testik-test'], ['Dárkové poukazy', 'darkove-poukazy'], ['Příslušenství k batohům', 'prislusenstvi-k-batohum'], ['Klíče na pedály, stranové,...', 'klice-na-pedaly-stranove'], ['Pláštěnky, hodinky, a ostatní...', 'plastenky-hodinky-a-ostatni'], ['Momentové klíče, ráčny a nástavce', 'momentove-klice-racny-a-nastavce'], ['Mikrofony a jejich příslušenství ', 'mikrofony-a-jejich-prislusenstvi'], ['Mazací olej Finish Line Teflon Plus DRY, kapátko', 'mazaci-olej-finish-line-teflon-plus-dry-kapatko'], ['29" Plášť MTB Schwalbe Fat Albert Front, Trailstar, Snakeskin, TL-easy', '29-plast-mtb-schwalbe-fat-albert-front-trailstar-snakeskin-tl-easy'], ['29" Mavic CrossRide 2018 - pár 15x100/12x142 + rú', '29-mavic-crossride-2018-par-15x100-12x142-ru'], ]; } /** * @dataProvider data_testSlugifyPL */ public function testSlugifyPL($string, $expected) { $this->assertEquals($expected, StringUtil::slugify($string)); } public function data_testSlugifyPL() { return [ ['Piżamy chłopięce', 'pizamy-chlopiece'], ['Długa piżama damska Olivia szara świąteczna', 'dluga-pizama-damska-olivia-szara-swiateczna'], ['ZŁ', 'zl'], ]; } /** * @dataProvider data_testCutToWords */ public function testCutToWords($string, $expected) { $this->assertEquals($expected, StringUtil::cutToWords($string, 15)); } public function data_testCutToWords() { return [ ['ahoj světe', 'ahoj světe'], ['ahoj světe, jak se máš', 'ahoj světe, jak'], ]; } }