我的内容来自数据库。我正在使用带有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>
如果我删除htmlconv =&#34; no&#34;从我的HTML代码然后它打印完美但它在行中断时打印br标签。
我也在控制器中试过这个
$string1=array(" ","<br />");
$string2=array(" ","/n");
$this->data['blk4'][]['tooltip']= str_replace($string1,string2,strip_tags($b['description']));
任何IDEA ??
答案 0 :(得分: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']);
答案 1 :(得分:1)
为了获得属性值的有效内容,您必须从XML / HTML实体以及分隔符"
中转义字符串。 (它们是获得HTML有效内容的另一种方式,但却相当复杂。)
TBS不会在本机中提供此类功能,但您可以在合并之前更改数据。您还可以使用onformat
或ondata
参数在合并期间更改它。
转义数据的示例:
$x = $this->data['blk4'][]['tooltip']
$x = strip_tags($x);
$x = str_replace('"', '', $x);
$this->data['blk4'][]['tooltip'] = $x;
答案 2 :(得分:0)
我已在视图页面中替换此行解决了我的问题:
<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>
我在上面的行
中的data-tooltip =''中更改了“”