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