gpt4 book ai didi

php - strlen 和特殊字符

转载 作者:行者123 更新时间:2023-12-02 07:10:59 28 4
gpt4 key购买 nike

我在这里找到解决方案时遇到问题。我正在为使用 for() 的客户开发 WordPress 主题。循环遍历页面标题,以便将其包装在 <span> 中s 并垂直显示.. 循环使用 strlen()找到标题的长度,但由于某些页面标题在标题中包含“...”或逗号,因此它返回 html 字符。或 htmlspecialchars_decode()不起作用..有什么建议吗?我现在知道的 for 循环有什么问题吗?

由于这里要求的是实际代码:

$p_title = get_the_title($port_page->ID);
$title = '';

for($i=0;$i<strlen($p_title);$i++){
if(($p_title[$i])){
$title .="<span>$p_title[$i]</span>";
}

我也尝试过使用 mb_strlen .. 搜索特定字符来替换的问题不一定能解决问题,因为页面标题是由站点所有者任意设置的。

奇怪的是标题没有以任何方式编码, echo 通常在 for 循环之前..所以好像有什么东西正在转换它..

最佳答案

strlen()只返回字符串中的字节数。一些特殊字符可以用多个字节表示,Unicode 也可以使单个“字符”如版权符号(“©”)占据许多字符(例如 &copy; )。

您的“...”(省略号)可以是 special character in Unicode例如。

我建议的快速而肮脏的解决方案:

// Example string should be 1 character long, 6 bytes
$text = "&copy;";
$bytes = strlen($text);

mb_internal_encoding('UTF-8');
$text = html_entity_decode($text, ENT_QUOTES, "UTF-8");
$length = mb_strlen($text);

print "String is ".$length." characters long, ".$bytes." bytes long";

请注意,我假设您的字符串已经是 UTF-8。如果不是,请先转换它。

关于php - strlen 和特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com