0

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

在此处输入图像描述

在上面的图像中,只有你好朋友打印。

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']));

任何想法 ??

4

3 回答 3

1

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

TBS 在本机中没有提供这样的功能,但您可以在合并之前更改数据。您也可以在合并期间使用onformatorondata参数更改它。

转义数据的示例:

$x = $this->data['blk4'][]['tooltip']
$x = strip_tags($x);
$x = str_replace('"', '', $x);
$this->data['blk4'][]['tooltip'] = $x;
于 2015-07-25T19:53:10.787 回答
1

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

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

Watch out for "quotation" marks

然后生成的 html 将像这样被破坏:

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

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

所以永远不要 没有正确转义的情况下输入用户输入(例如通过使用htmlconv)。相反,去掉<br>标签,也许使用strip_tags

$this->data['blk4'][]['tooltip'] = strip_tags($b['description']);
于 2015-07-22T11:30:19.980 回答
0

我通过在视图页面中替换此行解决了我的问题:

<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=' ' 中用 ' ' 更改了 " "

于 2015-09-19T06:46:15.020 回答