ホームページ > バックエンド開発 > PHPチュートリアル > 異なる長さの文字列をインターセプトする

異なる長さの文字列をインターセプトする

WBOY
リリース: 2016-06-23 14:10:18
オリジナル
1349 人が閲覧しました


インターセプトされた文字列、長さが異なります

<?PHP $prna=$row['description'];		   if(strlen($prna)>20)		{		$prna=mb_substr($prna,0,40,'utf-8')."...."; 		echo $prna;		}		else		{		echo $prna;		}	   	   	   	   ?>
ログイン後にコピー


スクリーンショットがアップロードできないことがよくあります、コンピューターに問題があるかどうかわかりません

結果:
MicroSD )....
iPhone3GS SIM カード ホルダー(黒)....
Nokia CA-101D ショート MicroUSB???
PSP2000 ベース? ...
3.5mm ?プラグ ハンガー?黒)....
iPhone 透明底プラグ (3?)....

ディスカッションへの返信 (解決策)

これは CSS で解決するのが最善です (コンテナの幅に応じて)

なぜなら文字列の長さはピクセル幅と等しくありません
ローカルディスプレイが調整されていても、クライアントが使用するフォントは制御できません。つまり、ピクセル幅はまだ不確かです
ブラウザのデフォルトを変更すると、フォントが理解できます

計算に何か問題があります

通常、ページテキストはデフォルトの Song フォントで表示されるため、漢字の表示幅は 2 文字の幅であると考えられます

フォントが非等幅フォントを使用している場合とすると、状況は次のようになります。 これははるかに複雑なので、ここでは説明しません

文字と記号の場合、1 バイトは 1 バイトです。
gbk エンコーディングの場合、1 つの漢字は 2 バイトであり、上記の状況とまったく一致します。
utf-8 エンコーディングの場合、1 つの中国語文字は 3 バイトです。つまり、占有率を計算するとき、中国語の文字数 * 2/3 が、文字によってインターセプトされます。中華でも洋食でも1つと数えます。ひょうたんプレースホルダー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート