[ "DuckDuckGo", "Brave", "Yandex", "Google", "Google API", "Google CSE", "Yahoo! JAPAN", "Startpage", "Yep", "Mwmbl", "Mojeek", "Naver", "Baidu", "Cốc Cốc", "Solofield", "Marginalia", "Purili", "wiby" ], "images" => [ "DuckDuckGo", "Yandex", "Brave", "Google", "Google API", "Google CSE", "Yahoo! JAPAN", "Startpage", "Naver", "Baidu", "Solofield", "Pinterest", "Flickr", "Pexels", "Pixabay", "Unsplash", "500px", "VSCO", "Imgur", "FindThatMeme" ], "videos" => [ "YouTube", "Vimeo", "Sepia Search", "DuckDuckGo", "Brave", "Yandex", "Google", "Yahoo! JAPAN", "Startpage", "Naver", "Baidu", "Cốc Cốc", "Purili", "Solofield" ], "news" => [ "DuckDuckGo", "Brave", "Google", "Yahoo! JAPAN", "Startpage", "Baidu" ], "music" => [ "SoundCloud", "Swisscows" ], "autocomplete" => [ "Brave", "DuckDuckGo", "Yandex", "Google", "Qwant", "Marginalia", "YouTube", "SoundCloud", "Startpage", "Kagi" ] ]; $lines = [ 0 => "", 1 => "" ]; // get longest scraper string // also get list of scrapers with most entries $biggest_category_len = 0; foreach($scrapers as $category_name => $category){ $count = count($category); if($count > $biggest_category_len){ $biggest_category_len = $count; } } foreach($scrapers as $category_name => $category){ // get longest string of the category $longest_len = mb_strlen($category_name); foreach($category as $scraper){ $strlen = mb_strlen($scraper); if($strlen > $longest_len){ $longest_len = $strlen; } } // add header $lines[0] .= mb_str_pad("| {$category_name}", $longest_len + 3); $lines[1] .= "|" . str_repeat("-", $longest_len + 2); for($i=2; $i