コード例 #1
0
 /**
  * Inserts a separator in a very long continuous sequences of characters
  * @param string $text The input string.
  * @param int $maxLength The maximum length of sequence.
  * @param string $customBreaker The custom string to be used as breaker.
  * @return string Returns the altered string.
  */
 public static function fixLongWords($text, $maxLength, $customBreaker = '')
 {
     $maxLength = (int) min(65535, $maxLength);
     if ($maxLength > 5) {
         ob_start();
         if ($customBreaker == '') {
             if (!empty($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false) {
                 $breaker = '<span style="margin: 0 -0.65ex 0 -1px;padding:0;"> </span>';
             } else {
                 $breaker = '<span style="font-size:0;padding:0;margin:0;"> </span>';
             }
         } else {
             $breaker = $customBreaker;
         }
         $plainText = $text;
         $plainText = preg_replace(_JC_REGEXP_EMAIL, '', $plainText);
         $plainText = preg_replace('#<br\\s?/?>#is' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<img[^\\>]+/>#is' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<a.*?>(.*?)</a>#is' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<span class="quote">(.*?)</span>#is', '', $plainText);
         $plainText = preg_replace('#<span[^\\>]*?>(.*?)</span>#is', '\\1', $plainText);
         $plainText = preg_replace('#<pre.*?>(.*?)</pre>#isU' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<blockquote.*?>(.*?)</blockquote>#isU' . JCOMMENTS_PCRE_UTF8, '\\1 ', $plainText);
         $plainText = preg_replace('#<code.*?>(.*?)</code>#isU' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<embed.*?>(.*?)</embed>#is' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<object.*?>(.*?)</object>#is' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#(^|\\s|\\>|\\()((http://|https://|news://|ftp://|www.)\\w+[^\\s\\[\\]\\<\\>\\"\'\\)]+)#i' . JCOMMENTS_PCRE_UTF8, '', $plainText);
         $plainText = preg_replace('#<(b|strong|i|em|u|s|del|sup|sub|li)>(.*?)</(b|strong|i|em|u|s|del|sup|sub|li)>#is' . JCOMMENTS_PCRE_UTF8, '\\2 ', $plainText);
         $words = explode(' ', $plainText);
         foreach ($words as $word) {
             if (JCommentsText::strlen($word) > $maxLength) {
                 $text = str_replace($word, JCommentsText::wordwrap($word, $maxLength, $breaker, true), $text);
             }
         }
         ob_end_clean();
     }
     return $text;
 }