Esempio n. 1
0
 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('&nbsp;', '&#160;'), ' ', $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('&nbsp;', ' ', $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));
}
Esempio n. 5
0
 /**
  * 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;
 }