PHP 中的 URL 編碼

Shraddha Paghdar 2023年1月30日
  1. 在 PHP 中使用 urlencode() 對 URL 進行編碼
  2. 在 PHP 中使用 rawurlencode() 對 URL 進行編碼
PHP 中的 URL 編碼

URL 可能具有路徑和查詢引數,例如某人的全名、另一個重定向 URL 或密碼。它們可以包含 ASCII 集之外的特殊字元,如空格或 $ & : / 等字元。

因此,在通過 Internet 傳輸之前,應將 URL 重新生成為合法的 ASCII 格式;否則,它們會干擾 HTTP 協議。

在今天的帖子中,我們將學習如何在 PHP 中編碼 URL。

PHP 提供了 2 個函式來對 URL 進行編碼。

在 PHP 中使用 urlencode() 對 URL 進行編碼

它是 PHP 提供的內建函式,用於對 URL 進行編碼。此函式用%後跟 2 個十六進位制數字替換不安全的 ASCII 字元。該函式根據 application/x-www-form-urlencoded 進行編碼。URL 不能包含空格,因此此函式將用加號 + 替換空格。特殊字元根據一些預定義的規則以極其特殊的格式重新生成。

urlencode() 的語法

urlencode(string $input);

引數

$input:這是一個強制引數,它只需要執行編碼的字串輸入 URL。

返回值

它返回一個字串,其中包含除 -_. 之外的所有非字母數字字元,這些字元由%符號替換,後跟 2 個十六進位制數字。

示例程式碼:

<?php
    echo urlencode("https://www.google.co.in/") . "\n";
    echo urlencode("https://www.google.com/") . "\n";
?>

輸出:

https%3A%2F%2Fwww.google.co.in%2F
https%3A%2F%2Fwww.google.com%2F

在 PHP 中使用 rawurlencode() 對 URL 進行編碼

它是 PHP 提供的內建函式,可以根據 RFC 3986 對給定的 URL(統一資源定位器)字串進行編碼。它根據普通的 Percent-Encoding 進行編碼。它用於防止文字字元被解釋為特殊的 URL 分隔符,並防止 URL 被帶有字元轉換的傳輸媒體(如某些電子郵件系統)破壞。

符號或空格字元將替換為後跟 2 個十六進位制數字的百分號 (%)。

rawurlencode() 的語法

rawurlencode(string $input);

引數

$input:它是一個強制引數,它只接受進行編碼的字串輸入 URL。

返回值

它返回一個編碼字串,其中包含除 -_.~ 符號之外的所有非字母數字字元。

示例程式碼:

<?php
   echo '<a href="http://testdomain.com/', rawurlencode('subscribers and admins/India'), '">';
?>

輸出:

<a href="http://testdomain.com/subscribers%20and%20admins%2FIndia">

urlencode()rawurlencode() 函式之間的唯一區別在於,首先將空格編碼為 +,然後將其編碼為 %20。此外,~ 是在 urlencode() 中編碼的,但不是在 rawurlencode() 中。如果要對查詢元件進行編碼,請使用 urlencode(),如果要對路徑段進行編碼,請使用 rawurlencode()

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

相關文章 - PHP Encoding