使用PHP中的HTML编号实体计算字符串的长度

时间:2012-01-02 13:59:20

标签: php html-entities strlen

我想用PHP计算字符串的长度。该字符串包含HTML实体编号,这会增加计算的字符数:短划线为–,当我只想将其计为1时,计为7。

如何将html编号的实体转换为特殊字符只计为长度为1的表单?

示例字符串:

Goth-Trad – ‘Cosmos’

代码:

$string = html_entity_decode('Goth-Trad – ‘Cosmos’');
    echo strlen($string);
当我正在寻找'20'时,

产生'38'。出了什么问题?

3 个答案:

答案 0 :(得分:3)

只需解码它并计算解码后的那个?

$string = html_entity_decode("Goth-Trad – ‘Cosmos’",ENT_QUOTES,"UTF-8");
echo strlen($string);

答案 1 :(得分:3)

您可以使用:

$html = 'Goth-Trad – ‘Cosmos’';
echo strlen(utf8_decode(html_entity_decode($html, ENT_COMPAT, 'utf-8')));

答案 2 :(得分:-1)

请尝试使用以下编码功能:

<?php   

$string='Goth-Trad &#8211; &#8216;Cosmos&#8217;'; 

echo html_entity_text_length($string); // Calling the function 

//html_entity_text_length function start

function html_entity_text_length($string){
    preg_match_all("/&(.*)\;/U", $string, $pat_array);
    $additional=0;
    foreach ($pat_array[0] as $key => $value) {
       $additional += (strlen($value)-1);
    }

    $limit+=$additional;
    return  strlen($string)-$limit;
}

//html_entity_text_length function end

?>