2013-06-11 3 views
2

У меня есть несколько элементов в базе данных, как показано нижеSTRLEN функции в PHP

Item  Description 
-------------------------- 
Item 1  Some text here 
Item 2  Some text 
Item 3  Some text here 
Item 4  Some 
Item 5  Some text here 

Здесь требование клиента, если описание более 15 символов, то мы должны отобразить только 15 символов и должны отображать некоторую пунктирную линию (. .). В случае, если описание меньше 15 символов, мы покажем полный текст (в настоящее время пунктирной линии не должно быть)

Для этого я написал нижеприведенный код.

<?php               
    if(strlen($row['description'])>15) { 
     echo mb_substr($row['description'],0,15,"UTF-8"); 
     echo" . . . . ."; 
    } 
    else 
    { 
     echo $row['description']; 
    } 
?> 

В случае английского языка этот код работает нормально, но в случае японского языка это создает проблему. Значит, даже текст меньше 15 символов пунктирной линии отображается (только в нескольких случаях)

В чем может быть проблема?

ответ

6

При работе с многобайтовыми символами, вы должны использовать mb_xxx функцию, здесь реализация strlen: mb_strlen

Edit: Вы можете прочитать больше о мультибайтных строковых функциях: http://www.php.net/manual/en/ref.mbstring.php

+0

Спасибо Это работает отлично ... :-) – Sowmya

+0

Отлично! Вы можете принять ответ, если все работает для вас. – vitozev

3

Использования mb_strlen(), так как он вернет правильную длину при работе с многобайтовыми кодировками.

+0

Спасибо, он отлично работает ... :-) – Sowmya

0

Это поможет вам ...........

<?php 

if(mb_strlen($row['description'])>15) { 

    echo mb_substr($row['description'],0,15,"UTF-8"); 

    echo" . . . . ."; 

} 

else 

{ 

    echo $row['description']; 

} 

?>

Смежные вопросы