2

以下のようにデータベースにいくつかのアイテムがあります

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 文字未満の点線でも表示されることを意味します (ごくまれに)

何が問題なのですか?

4

3 に答える 3

6

マルチバイト文字を扱うときmb_xxxは、関数を使用する必要があります。次の実装がありstrlenます: mb_strlen

編集:マルチバイト文字列関数の詳細を読むことができます: http://www.php.net/manual/en/ref.mbstring.php

于 2013-06-11T10:22:21.253 に答える
0

それはあなたを助けるでしょう........

<?php 

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

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

    echo" . . . . .";

}

else

{

    echo $row['description'];

}

?>

于 2013-06-11T10:47:55.067 に答える