我使用Bootstrap 5中的工具提示以及Wordpress中的高级自定义字段。
我现在把它设置成这样。
<button data-bs-toggle="tooltip" data-bs-placement="right" data-html="true" data-bs-sanitize="true" title='<?php if (get_sub_field('desc')): ?><?php the_sub_field('desc'); ?><?php endif; ?>'>tooltip title</button>
第一个问题是,如果使用双引号("(,它会被截断,但我将上面的代码更改为在title属性("(中使用单引号。现在可以使用双引号,但不能使用单引号(撇号(。现在,文本在单引号(撇号(之后被截断。
有人找到解决办法了吗?我目前正在使用(`(作为快速修复程序,它正在工作,但我想看看是否有更好的实现方法?
提前感谢!
我认为应该使用esc_html函数(https://developer.wordpress.org/reference/functions/esc_html/)以输出title属性的值。
那就是你会在输出中收到一个与html 兼容的字符串
为了验证您的输出是否是您想要的,请检查页面源代码(而不是检查,因为检查会动态地进行一些重构以供您查看(
<button data-bs-toggle="tooltip" data-bs-placement="right" data-html="true" data-bs-sanitize="true" title='<?php if (get_sub_field('desc')): ?><?php esc_html(get_sub_field('desc')); ?><?php endif; ?>'>tooltip title</button>
要显示单引号",请使用"请参阅-https://www.w3.org/wiki/Common_HTML_entities_used_for_typography
将单引号的每个实例都替换为',但当我在上面指出这一点时,字符串被编码并用撇号替换了'。(Ampersand+apos+分号(在c#中,我们使用System.Web.HttpUtility.HtmlEncode("您是带引号的字符串"(;但我相信其他语言都有相同的工具集,但名称不同。这个问题是由使用对浏览器有特殊意义的字符引起的,您需要对它们进行转义。