星期日, 17 8 月, 2025
No Result
View All Result
育心文具行

育心文具行

  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
育心文具行
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
No Result
View All Result
育心文具行
Home 筆記x備忘

解決 PHP8.2 mb_convert_encoding 方法已經棄用的問題。

2024-10-27
in 筆記x備忘
Reading Time:2 mins read
A A
0

PHP 中 mb_convert_encoding() 實作了將字串從一種字元編碼轉換為另一種字元編碼,但是在 PHP 8.2 時這個方法就棄用了,找到解決辦法並且測試一下。

先講結論,應該使用這個方法

function _($string)
{
    return mb_encode_numericentity(
        htmlspecialchars_decode(
            htmlentities($string, ENT_NOQUOTES, 'UTF-8', false)
            , ENT_NOQUOTES
        ), [0x80, 0x10FFFF, 0, ~0],
        'UTF-8'
    );
}

參考這裡是正確答案:

測試程式碼:

<?php

$string = '中文:!"$%&/()=ÖÄÜöäü<<accentué За матеріалами';


echo mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8')."\n\n";
// 方法 1
echo mb_encode_numericentity(
    htmlspecialchars_decode(
        htmlentities($string, ENT_NOQUOTES, 'UTF-8', false)
        ,ENT_NOQUOTES
    ), [0x80, 0x10FFFF, 0, ~0],
    'UTF-8'
);
echo "\n\n";
// 方法 2
echo htmlspecialchars_decode(htmlentities($string));

變化後方法 1 和原方法是一樣的。先自首,我其實看不太懂這意思,丟個 AI 解釋水字數一下:

這段程式碼通過以下步驟將 UTF-8 字符串轉換為 HTML 實體:

  1. htmlentities():將特殊字符轉換為 HTML 實體,但不處理引號。
  2. htmlspecialchars_decode():將 HTML 實體轉回原始字符。
  3. mb_encode_numericentity():將範圍內的字符轉換為數值實體表示,這裡的範圍 [0x80, 0x10FFFF] 適用於大多數 Unicode 字符。

此方法提供更精確的 HTML 實體處理,尤其適合多字節字符編碼。

接下來就是接 DOMDocument 做 HTML 解析了,DOMDocument 還會有一個問題是 HTML5 不太支援,這算是用 PHP 做爬蟲的原罪吧。

Tags: htmlentitieshtmlspecialchars_decodemb_convert_encodingmb_encode_numericentityphpphp8.2php82
Share22Tweet14
Previous Post

如何在網站中整合 Google reCAPTCHA v3

Next Post

Debian 11 中更改系統語言,解決亂碼問題

Related Posts

筆記x備忘

解決 PHP 的 dompdf 中文字體亂碼的方法

記錄一下一個之前解決過的問題。 在使用 ...

2025-01-03
100
筆記x備忘

Sublime Text3 檢查 Codeigniter4 專案的外掛

使用 Sublime Text 檢查 C...

2024-12-16
100
筆記x備忘

Nginx 中同一個網域設定不同應用程式/目錄

技能點還沒有點太多的領域一點點成果就會獲...

2024-08-22
100
筆記x備忘

ionCube 加密/混淆 PHP for Codeigniter4 筆記

前陣子在搞 Android 的混淆,在第...

2024-03-10
100
筆記x備忘

WordPress 上 Cookie 的 SameSite 問題

參考這篇問題,主要是描述在支付頁面 re...

2024-01-04
100
筆記x備忘

PHP 源碼掃描實作,使用 SonarQube

PHP 的原始碼弱點掃描實作,這邊使用 ...

2023-11-27
100
Load More
Next Post

Debian 11 中更改系統語言,解決亂碼問題

Sublime Text3 檢查 Codeigniter4 專案的外掛

協助你在社群網站貼標籤的外掛「My Notes Extension 社群標籤」

全站搜尋

No Result
View All Result

關於我

育心文具行

Jerry Lin

程式設計師

育心文具行是一家文具店,老闆的小兒子是一個設計師,職業是設計程式,興趣是設計人,倒是還沒有實作的機會。
--
所有的相遇都不是巧合。
在廣告公司待了三年有兩年多在做內容產品,離職後繼續在內容產業走了四年多,最後選則離開台灣的公司體制在家 SOHO ,碰上了 2020 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • LLM 生成參數清單與說明
  • 使用 google 的 Gemini CLI 來製作字幕
  • 2025-07-29 社交模式檢討
  • 2025-07-25 社交模式檢討
  • 2025-07-12 N8N Workshop 筆記心得

分類

  • 心得x體驗 (47)
  • 筆記x備忘 (79)
  • 閒談x雜記 (15)

贊助買咖啡

Facebook Instagram RSS

標籤

android ci4 cloudflare Codeigniter codeigniter 4 flutter git ios linode linux MAC macos nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 備份 原則 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 媒體識讀 工作的原則 心得 意志力 活動心得 灰階思考 第三部分 第二部分 第四部分 股癌 自慢10 自慢10:18項修練 謝孟恭 讀書心得

文章分類

  • 心得x體驗 (47)
  • 筆記x備忘 (79)
  • 閒談x雜記 (15)

近期文章

  • LLM 生成參數清單與說明
  • 使用 google 的 Gemini CLI 來製作字幕
  • 2025-07-29 社交模式檢討
  • 2025-07-25 社交模式檢討
  • 2025-07-12 N8N Workshop 筆記心得

近期留言

  • 「Bolin Lai」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「Jerry Lin」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「JCL」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言

文章月曆

2025 年 8 月
日 一 二 三 四 五 六
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« 7 月    

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.

No Result
View All Result
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.