星期四, 19 6 月, 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 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

贊助買咖啡

Facebook Instagram RSS

標籤

ai android cloudflare flutter git ios javascript linode linux MAC macos mis nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 前端 原則 原子習慣 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 壓力測試 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 心得 情緒 活動心得 灰階思考 約翰‧漢尼斯 股癌 自慢10 自慢10:18項修練 記錄 謝孟恭 讀書心得 這一生,你想留下什麼?

文章分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

近期留言

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

文章月曆

2025 年 6 月
日 一 二 三 四 五 六
1234567
891011121314
15161718192021
22232425262728
2930  
« 5 月    

© 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.