protected function getCancelUrl($slug, $catslug) { $page = String::trim($this->params->get('cancel_url')); if (!$page) { $uri = \JUri::getInstance(); $page = $uri->toString(array("scheme", "host")) . \JRoute::_(\CrowdfundingHelperRoute::getBackingRoute($slug, $catslug, "default"), false); } return $page; }
/** * Small helper function to trim UTF-8 encoded strings * * @param string $utf8string - UTF-8 encoded string * * @return string - Trimmed UTF-8 encoded string */ private function mb_trim($utf8string) { return String::trim($utf8string); }
/** * Truncates text blocks over the specified character limit and closes * all open HTML tags. The method will optionally not truncate an individual * word, it will find the first space that is within the limit and * truncate at that point. This method is UTF-8 safe. * * @param string $text The text to truncate. * @param integer $length The maximum length of the text. * @param boolean $noSplit Don't split a word if that is where the cutoff occurs (default: true). * @param boolean $allowHtml Allow HTML tags in the output, and close any open tags (default: true). * * @return string The truncated text. * * @since 11.1 */ public static function truncate($text, $length = 0, $noSplit = true, $allowHtml = true) { // Assume a lone open tag is invalid HTML. if ($length == 1 && substr($text, 0, 1) == '<') { return '...'; } // Check if HTML tags are allowed. if (!$allowHtml) { // Deal with spacing issues in the input. $text = str_replace('>', '> ', $text); $text = str_replace(array(' ', ' '), ' ', $text); $text = StringString::trim(preg_replace('#\\s+#mui', ' ', $text)); // Strip the tags from the input and decode entities. $text = strip_tags($text); $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8'); // Remove remaining extra spaces. $text = str_replace(' ', ' ', $text); $text = StringString::trim(preg_replace('#\\s+#mui', ' ', $text)); } // Whether or not allowing HTML, truncate the item text if it is too long. if ($length > 0 && StringString::strlen($text) > $length) { $tmp = trim(StringString::substr($text, 0, $length)); if (substr($tmp, 0, 1) == '<' && strpos($tmp, '>') === false) { return '...'; } // $noSplit true means that we do not allow splitting of words. if ($noSplit) { // Find the position of the last space within the allowed length. $offset = StringString::strrpos($tmp, ' '); $tmp = StringString::substr($tmp, 0, $offset + 1); // If there are no spaces and the string is longer than the maximum // we need to just use the ellipsis. In that case we are done. if ($offset === false && strlen($text) > $length) { return '...'; } if (StringString::strlen($tmp) > $length - 3) { $tmp = trim(StringString::substr($tmp, 0, StringString::strrpos($tmp, ' '))); } } if ($allowHtml) { // Put all opened tags into an array preg_match_all("#<([a-z][a-z0-9]*)\\b.*?(?!/)>#i", $tmp, $result); $openedTags = $result[1]; // Some tags self close so they do not need a separate close tag. $openedTags = array_diff($openedTags, array("img", "hr", "br")); $openedTags = array_values($openedTags); // Put all closed tags into an array preg_match_all("#</([a-z]+)>#iU", $tmp, $result); $closedTags = $result[1]; $numOpened = count($openedTags); // All tags are closed so trim the text and finish. if (count($closedTags) == $numOpened) { return trim($tmp) . '...'; } // Closing tags need to be in the reverse order of opening tags. $openedTags = array_reverse($openedTags); // Close tags for ($i = 0; $i < $numOpened; $i++) { if (!in_array($openedTags[$i], $closedTags)) { $tmp .= "</" . $openedTags[$i] . ">"; } else { unset($closedTags[array_search($openedTags[$i], $closedTags)]); } } } if ($tmp === false || strlen($text) > strlen($tmp)) { $text = trim($tmp) . '...'; } } // Clean up any internal spaces created by the processing. $text = str_replace(' </', '</', $text); $text = str_replace(' ...', '...', $text); return $text; }
function kStringURLSafe($str) { return \Joomla\String\String::trim(preg_replace(array('/(\\s|\\xE3\\x80\\x80)+/u', '/[\\$\\&\\+\\,\\/\\:\\;\\=\\?\\@\'\\"\\<\\>\\#\\%\\{\\}\\|\\\\^\\~\\[\\]\\`\\.\\(\\)\\*\\!]/u'), array('-', ''), $str)); }
/** * Clean tags, spaces and newlines. * * <code> * $content = "If you can <strong>dream</strong> it, you can do it. " * * $string = new Prism\String($content); * $string->clean(); * * echo $string; * </code> * * @return self */ public function clean() { $this->content = strip_tags($this->content); $this->content = JString::trim(preg_replace('/\\r|\\n/', ' ', $this->content)); return $this; }