TinyButStrong htmlcov="no" 不会在工具提示中打印双引号 (" ") 之后的字符串

TinyButStrong htmlconv="no" dont print string which comes after doble quotes (" ") in tooltip

我有来自数据库的内容。我在 codeigniter 中使用 TBS 库。我正在显示 200 个字符限制的内容。用户可以通过将鼠标悬停在内容上作为工具提示来查看完整内容。但是在工具提示中,双引号(" ")后面的字符串没有显示。

上图仅Hello freinds打印。

HTML代码:

<td><a class="tooltip-right" data-tooltip="<!--[blk4.tooltip;block=tr;comm;htmlconv=no;noerr]-->"><!--[blk4.tooltip;block=tr;comm;ope=max:200;]--></a></td>

如果我从我的 HTML 代码中删除 htmlconv="no" 那么它打印完美但当换行时它打印 br 标签。

我也在控制器中尝试过这个

$string1=array("&nbsp;","<br />");
$string2=array(" ","/n");
$this->data['blk4'][]['tooltip']= str_replace($string1,string2,strip_tags($b['description']));

有什么想法吗??

htmlconv 选项将转义引号。否则它们将按原样包含(这很危险,可能导致 XSS 漏洞)。

包含它们时,它们只会破坏您的 HTML。假设您希望工具提示中包含以下文本:

Watch out for "quotation" marks

然后生成的html会这样断:

<a ... data-tooltip="Watch out for "quotation" marks">...</a>

上面的语法突出显示向您展示了解析器如何认为您的工具提示文本在出现第一个引号时结束。

所以 never ever 放置用户输入而不正确转义(例如使用 htmlconv)。相反,删除 <br> 标签,可能使用 strip_tags:

$this->data['blk4'][]['tooltip'] = strip_tags($b['description']);

为了使属性值具有有效内容,您必须从 XML/HTML 实体和定界符 " 中转义您的字符串。 (它们是获得 HTML 有效内容的另一种方式,但要复杂得多。)

TBS在原生中没有提供这样的功能,但您可以在合并前更改您的数据。您还可以在合并期间使用 onformat or ondata 参数更改它。

转义数据的例子:

$x = $this->data['blk4'][]['tooltip']
$x = strip_tags($x);
$x = str_replace('"', '', $x);
$this->data['blk4'][]['tooltip'] = $x;

我已经通过替换视图页面中的这一行解决了我的问题:

<td><a class="tooltip-right" data-tooltip='<!--[blk4.tooltip;block=tr;comm;htmlconv=no;noerr]-->'><!--[blk4.t‌​ooltip;block=tr;comm;ope=max:200;]--></a></td>

我在上面一行的 data-tooltip=' ' 中将 " " 更改为 ' '