Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP - ถอดรหัสฟิลด์ส่วนหัว MIME หลายฟิลด์พร้อมกันโดยใช้ iconv_mime_decode_headers()


ใน PHP iconv_mime_decode_headers() ฟังก์ชั่นใช้เพื่อถอดรหัสฟิลด์ส่วนหัว MIME หลายฟิลด์พร้อมกัน เป็นฟังก์ชันที่สร้างขึ้นใน PHP

ไวยากรณ์

iconv_mime_decode_headers($str_headers, $int_mode, $str_encoding)

พารามิเตอร์

The iconv_mime_decode_headers() ฟังก์ชั่นยอมรับพารามิเตอร์ที่แตกต่างกันสามตัว $headers , $mode และ $encoding .

  • $headers − พารามิเตอร์ $header ใช้สำหรับส่วนหัวที่เข้ารหัส เป็นพารามิเตอร์ประเภทสตริง

  • โหมด$ − พารามิเตอร์ $mode กำหนดพฤติกรรมในเหตุการณ์ iconv_mime_decode_headers() พบฟิลด์ส่วนหัว MIME ที่ผิดรูป เราสามารถใช้บิตมาสก์ต่อไปนี้ร่วมกันได้

  • รายการบิตมาสก์ที่ iconv_mime_decode_headers() ยอมรับได้

    • ICONV_MIME_DECODE_STRICT
    • ICONV_MIME_DECODE_CONTINUE_ON_ERROR
    • ICONV_MIME_DECODE_STRICT - หาก iconv_mime_decode_strict ถูกตั้งค่า ส่วนหัวที่กำหนดจะถูกถอดรหัสตามความสอดคล้องอย่างสมบูรณ์ แต่ตัวเลือกนี้ถูกปิดใช้งานโดยค่าเริ่มต้นเนื่องจากมีตัวแทนผู้ใช้เมลที่ใช้งานไม่ได้จำนวนมากที่ไม่เป็นไปตามข้อกำหนดและไม่สร้างส่วนหัว MIME ที่ถูกต้อง
    • ICONV_MIME_DECODE_CONTINUE_ON_ERROR - หาก iconv_mime_decode_continue_on_error() มีการตั้งค่าพารามิเตอร์ไว้ โดยจะพยายามละเว้นข้อผิดพลาดทางไวยากรณ์และดำเนินการประมวลผลส่วนหัวที่กำหนดต่อไป
  • เข้ารหัส $ − การเข้ารหัสเป็นพารามิเตอร์ทางเลือกที่ใช้ในการระบุชุดอักขระเพื่อแสดงผลลัพธ์ iconv.internal_encoding จะถูกใช้หากไม่ระบุหรือไม่มีค่า

ผลตอบแทนที่ได้รับ

iconv_mime_decode_headers() ฟังก์ชันจะคืนค่า associative array ที่เก็บทั้งชุดของฟิลด์ส่วนหัว MIME ที่ระบุโดย headers เมื่อสำเร็จ หรือส่งกลับค่า False หากเกิดข้อผิดพลาดขึ้นในระหว่างการถอดรหัส

ตัวอย่างที่ 1

<pre>
   <?php
      $str_headers = <<<EOF
      Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=
      To: xyz@example.com
      Date: Mon, 21 Jun 2021 00:00:00 +0000
      Message-Id: <xyz@example.com>
      Received: from localhost (localhost [127.0.0.1]) by localhost
         with SMTP id xyz for <xyz@example.com>;
         Mon, 21 Jun 2021 00:00:00 +0000 (UTC)
         (envelope-from example-return-0000-xyz=xyz.com@example.com)
      Received: (qmail 0 invoked by uid 65534); 21 Mon 2005 00:00:00 +0000
      EOF;
      $headers = iconv_mime_decode_headers($str_headers, 0, "ISO-8859-1");
      print_r($headers);
   ?>
</pre>

ผลลัพธ์

Array
(
   [Subject] => Pr�fung Pr�fung
   [To] => xyz@example.com
   [Date] => Mon, 21 Jun 2021 00:00:00 +0000
   [Message-Id] =>
   [Received] => Array
      (
         [0] => from localhost (localhost [127.0.0.1]) by localhost with SMTP id xyz for ; Mon, 21 Jun 2021 00:00:00 +0000 (UTC) (envelope-from example-return-0000-xyz=xyz.com@example.com)
         [1] => (qmail 0 invoked by uid 65534); 21 Mon 2005 00:00:00 +0000
      )
)