Защита от длиных слов

Discussion in 'PHP' started by Alex_Vichi, 4 May 2011.

  1. Alex_Vichi

    Alex_Vichi New Member

    Joined:
    9 Dec 2010
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Использую таблица на сайте и чтобы не искажать их использую функцию чтобы слова дленее n букв обрезались пробелом...

    PHP:
     $wordlen 0;
        
    $wrap =40;
        for(
    $i 0$i strlen($message); $i++)
        {
          
    $text2 .= $message[$i];
          if(
    $message[$i] != " ")
            
    $wordlen++;
          else
            
    $wordlen 0;
          if(
    $wordlen $wrap)
          {
            
    $text2 .= " ";
            
    $wordlen 0;
          }
        }
         
    $message $text2;  
    Так же стоит функция активизации ссылки, ну то есть на нее можно будет нажать...

    PHP:
    // Функция обратного вызова для preg_replace_callback().
    function hrefCallback($p)
     {
      
    // Преобразуем спецсимволы в HTML-представление.
      
    $name htmlspecialchars($p[0]);
      
    // Если нет протокола, добавляем его в начало строки.  
      
    $href = !empty($p[1])? $name "http://$name";
      
    // Формируем ссылку.
      
    $name=parse_url($name);
      return 
    "<a href=\"$href\">$name[host]$name[path]</a>";
      
      
      
    }

    // Заменяет ссылки на их HTML-эквиваленты ("подчеркивает ссылки").
    function hrefActivate($message) {
      return 
    preg_replace_callback(
        
    '{
          (?:
            (\w+://)          # протокол с двумя слэшами
            |                 # - или -
            www\.             # просто начинается на www
          )
          [\w-]+(\.[\w-]+)*   # имя хоста
          (?: : \d+)?         # порт (не обязателен)
          [^<>"\'()\[\]\s]*   # URI (но БЕЗ кавычек и скобок)
          (?:                 # последний символ должен быть...
              (?<! [[:punct:]] )  # НЕ пунктуацией
            | (?<= [-/&+*]     )  # но допустимо окончание на -/&+*
          )
        }xis'
    ,
        
    "hrefCallback",
        
    $message
      
    );

    Дело в том что первая функция обрезает все, вместе с сылками.

    Так вот как исключить разделение пробелом Адресс ссылки.
    Подскажите. Спасибо.
     
    #1 Alex_Vichi, 4 May 2011
    Last edited: 4 May 2011
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Alex_Vichi Вставьте нормально код. Вместо первой функции используйте http://php.net/wordwrap
     
    _________________________
  3. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Можно использовать мягкие переносы. Здесь (http://xpoint.ru/know-how/VebAlgoritmyi/RabotaSTekstami/RasstanovkaPerenosov?5) алгоритм на php.
     
  4. Alex_Vichi

    Alex_Vichi New Member

    Joined:
    9 Dec 2010
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    wordwrap() разделяет полностью текст, а у меня одно слово. это мне не подходит д разделение тут не главное ...мне главное как исключить именно адрес ссылки к разделению на пробелы
    PHP:
    function hrefCallback($p)
     {
      
    // Преобразуем спецсимволы в HTML-представление.
      
    $name htmlspecialchars($p[0]);
      
    // Если нет протокола, добавляем его в начало строки.  
      
    $href = !empty($p[1])? $name "http://$name";
      
    // Формируем ссылку.
      
    $name=parse_url($name);
      return 
    "<a href=\"$href\">$name[host]$name[path]</a>";
    }

    Тут выводит return "<a href=\"$href\">$name[host]$name[path]</a>";

    исключить имено для переменной $href
     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Хочешь реализовать у себя такой же крутой баг, как на античате?
    HTML:
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    PHP:
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    Code:
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    Code:
    document.getElementById('target').appendChild(node);
    Построить дерево, выбрать из него текстовые узлы. Или пусть значения других атрибутов портятся?
     
Loading...
Similar Threads - Защита длиных слов
  1. GAiN
    Replies:
    3
    Views:
    7,750