1

したがって、私が作業しているWebページで、ユーザーがhtml形式の説明を入力し、それが機能しているデータベースに追加された場合、説明を取得して150文字に短縮し、「... "タグが閉じられないことがあるため、HTMLが台無しになります。どんな提案も素晴らしいでしょう

4

3 に答える 3

0
  1. strip_tags と異なるタグの分割の組み合わせを使用して、断片だけを取得して 150 文字に短縮できます。

  2. 省略記号と呼ばれる CSS スタイルを使用できます。例:

:

.ellipsisClass {
  width: 250px; // you MUST set a width
  white-space: nowrap;  // you MUST set nowrap
  overflow: hidden;  // you MUST set overflow to hidden
  text-overflow: ellipsis; // and then you can use text-overflow: ellipsis
}
于 2013-10-16T20:57:24.340 に答える
0

リンクでソリューションを参照できます: https://github.com/dhngoc/php-cut-html-string。カット後に文字列の末尾に「…」を追加したい場合。関数 cutHtmlString を調整する必要があります。次の行コードを参照してください。

$opened_tags = array_reverse($opened_tags);
foreach ($opened_tags as $key => $item) {
   $act_str = $act_str . '</'.$item.'>';    
}

への変更

$opened_tags = array_reverse($opened_tags);
foreach ($opened_tags as $key => $item) {
    if ($key == 0) {
     $act_str = $act_str . '...</'.$item.'>';      
   } else {
     $act_str = $act_str . '</'.$item.'>';    
   }       

}
于 2014-09-21T03:58:55.597 に答える
0

これは、同様の質問に対する優れた回答です。タグを数えて、切り捨てられたものを追加する必要があります。

疑似コード

userData = getUserInput();
stack = array();
loop (line in userData) {
   matches = search for "<*>"; // may have multiple on one line
   loop (match in matches) {
      tagName = getTagNameFrom(match);
      if ("/" is not found) {
         push tagName on stack;
      } else if ("/" is found) {
         pop tagName off stack; 
         // There was an error if the stack is
         // empty or the tagName that was popped was not
         // the same.
      }
   }
}
foreach tagName in stack {
   userdata += "</" + tagName + ">";
}

ところで、あなたの Web ページは XSS に対して非常に脆弱なようです。

于 2013-10-16T20:57:02.023 に答える