/** * Convert a String to URL, e.g., "Petty<br>theft" to "Petty-theft" * * @param String $text * @param Int $length length of the output string * @param String $language * @param Boolean $file_name keep the "." from the extension e.g.: "imaäe.jpg" => "image.jpg" * @param Boolean $removeWords remove some "words" -> set via "remove_words()" * @param Boolean $strtolower use strtolower() at the end * @param String $seperator define a new seperator for the words * * @return String */ public static function filter($text, $length = 200, $language = 'de', $file_name = false, $removeWords = false, $strtolower = false, $seperator = '-') { // seperator-fallback if (!$seperator) { $seperator = '-'; } $text = preg_replace(self::$arrayToSeperator, $seperator, $text); // 1) replace with $seperator $text = UTF8::strip_tags($text); // 2) remove all other html-tags $text = self::downcode($text, $language); // 3) use special language replacer $text = preg_replace(self::$arrayToSeperator, $seperator, $text); // 4) replace with $seperator, again // remove all these words from the string before urlifying if ($removeWords === true) { $removeWordsSearch = '/\\b(' . join('|', self::get_remove_list($language)) . ')\\b/i'; } else { $removeWordsSearch = '//'; } // keep the "." from e.g.: a file-extension? if ($file_name) { $remove_pattern = '/[^' . $seperator . '.\\-a-zA-Z0-9\\s]/u'; } else { $remove_pattern = '/[^' . $seperator . '\\-a-zA-Z0-9\\s]/u'; } $text = preg_replace(array('`[' . $seperator . ']+`', '[^A-Za-z0-9]', $remove_pattern, '/[' . $seperator . '\\s]+/', '/^\\s+|\\s+$/', $removeWordsSearch), array($seperator, '', '', $seperator, '', ''), $text); // convert to lowercase if ($strtolower === true) { $text = strtolower($text); } // trim "$seperator" from beginning and end of the string $text = trim($text, $seperator); // "substr" only if "$length" is set if ($length && $length > 0) { $text = (string) substr($text, 0, $length); } return $text; }