Подсчет длины строки с нумерованными сущностями HTML в PHP - PullRequest
4 голосов
/ 02 января 2012

Я бы хотел посчитать длину строки с помощью PHP. Строка содержит номера сущностей HTML, которые увеличивают количество подсчитываемых символов: тире равно –, что считается как 7, когда я хочу, чтобы оно считалось как 1.

Как преобразовать пронумерованные сущности html в форму, в которой специальные символы учитываются только с длиной 1?

Пример строки:

Goth-Trad – ‘Cosmos’

Код:

$string = html_entity_decode('Goth-Trad – ‘Cosmos’');
    echo strlen($string);

выдает «38», когда я ищу «20». Что не так?

Ответы [ 3 ]

3 голосов
/ 02 января 2012

Вы можете использовать это:

$html = 'Goth-Trad – ‘Cosmos’';
echo strlen(utf8_decode(html_entity_decode($html, ENT_COMPAT, 'utf-8')));
3 голосов
/ 02 января 2012

Просто расшифровать его и посчитать декодированное?

$string = html_entity_decode("Goth-Trad – ‘Cosmos’",ENT_QUOTES,"UTF-8");
echo strlen($string);
0 голосов
/ 30 ноября 2012

Пожалуйста, попробуйте следующую функцию кодирования:

<?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

?>
...