php htmlspecialchars substr

Discussion in 'PHP' started by Engineer, 15 Jul 2010.

  1. Engineer

    Engineer Member

    Joined:
    22 May 2009
    Messages:
    70
    Likes Received:
    5
    Reputations:
    0
    столкнулся с такой траблой: в базе хранится текст обработанный через htmlspecialchars, при выводе текста нужно сделать своего рода привью подрезав текст под определенную длинну, но так как внутри текста могут встречаться закодированные символы типа > то при подрезке может случиться так что влезет лишь &g и само собой суровый html/xml будет кричать на это, у меня есть пара вариантов но они слишком ресурсоемкие для такой простой проблемы, возможно у кого то есть уже написанный и используюмый код для обхода этой траблы?
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Engineer 1) не храните в базе текст обработанный htmlspecialchars.
    2)
    PHP:
    htmlspecialchars(substr(htmlspecialchars_decode($str),0,120));
     
    _________________________
  3. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    PHP:
    $data substr($text0200);
    $i strlen($data) - 1;
    while(
    $data[$i] != ' ' && $data[$i] != "\n" && $data[$i] != "\r" && $data[$i] != "\t")
    {
    $data[$i] = "\0";
    }
    Преимущество такого варианта: не будет обрубленных слов
     
    1 person likes this.
  4. haine

    haine New Member

    Joined:
    13 Dec 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Можно проще:

    Code:
    $r=wordwrap($text, 20, '<br />');// переносит строку, не разрывая слов
    $r2=explode('<br />',$r);
    $result=$r2[0];
    В $result получится строка, ровно обрезанная под нужную длину, не обрезав слов.
     
  5. Engineer

    Engineer Member

    Joined:
    22 May 2009
    Messages:
    70
    Likes Received:
    5
    Reputations:
    0
    Почему? На мой взгляд лучше функцию использовать один раз при записи и не париться с многочисленным выводом ежели наоборот.
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Engineer чтобы впоследствие не возникали вопросы как этот. И чтобы не портить данные в базе. И чтобы была привычка все ВЫВОДИМЫЕ данные обрабатывать, а то понадеетесь что в базе все обработано, а какая нить переменная не проинициализирована.
     
    _________________________
    2 people like this.