したがって、私が作業しているWebページで、ユーザーがhtml形式の説明を入力し、それが機能しているデータベースに追加された場合、説明を取得して150文字に短縮し、「... "タグが閉じられないことがあるため、HTMLが台無しになります。どんな提案も素晴らしいでしょう
3 に答える
0
strip_tags と異なるタグの分割の組み合わせを使用して、断片だけを取得して 150 文字に短縮できます。
省略記号と呼ばれる 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 に答える