亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Substr 將最后一個字符顯示為?

Substr 將最后一個字符顯示為?

PHP
心有法竹 2022-05-27 16:55:53
我的問題有點簡單。對于我的網站,我編寫了一個函數來獲取文本的第一個字符以在預覽中顯示這些字符。這一直有效,直到最后一個字符是像 ü ? ? 這樣的“元音變音”。這是因為它將這些字符計算為雙倍(2 個字節)嗎?這是一個例子:function getFirstChars($str, $count){    $str = trim($str);    $str = substr($str, 0, $count);    return $str;}$str = 'Nach Schaffenspausen, Wiedervereinigungen und leider auch einem Schicksalsschlag, kam die 1995 gegründete Band';echo getFirstChars($str, 100);當我這樣做時,我得到一個?在最后。所以我試圖改變我的功能,現在它可以工作了,但我不知道這是否是一個好的解決方案:function getFirstChars($str, $count){    $str = trim($str);    $lastChar = substr($str, 0, $count);    if(mb_detect_encoding($lastChar[$count-1]) == 'UTF-8'){        $str = substr($str, 0, $count+1);    }else{        $str = substr($str, 0, $count);    }    return $str;}非常感謝!
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

對于包含多字節字符的字符串,該substr函數不安全。這是因為像 substr 這樣的標準字符串函數不適用于字符而是字節。兩字節字符被視為兩個單獨的字符。

要使用多字節字符,您必須使用mbstring庫中的函數。在你的情況下,它是mb_substr.

您可以在文檔中找到更多信息。


查看完整回答
反對 回復 2022-05-27
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

只有啟用并使用了擴展程序,您的getFirstChars功能才會起作用。對于多字節安全子字符串,我們可以使用mb_substr函數mbstringmb_substr


function getFirstChars($str, $count){

    if(!function_exists('mb_substr')){

      die('enable mbstring extension'); // you may throw an exception too. 

    }

    $str = trim($str);

    $str = mb_substr($str, 0, $count);


    return $str;

}


查看完整回答
反對 回復 2022-05-27
  • 2 回答
  • 0 關注
  • 172 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號