Skip to content

Latest commit

 

History

History
287 lines (251 loc) · 26.3 KB

README.ja.md

File metadata and controls

287 lines (251 loc) · 26.3 KB

English / 日本語

URL Standard

URL Standardで定義されているアルゴリズム、および API を PHP から利用できるようにします。

概要

URL Standard は、従来の標準である RFC 3986RFC 3987 を置き換える Web 標準仕様です。

この仕様ではAPIとして、URLインターフェース、およびURLSearchPramsインターフェースを定義しています。 当ライブラリでは、URLインターフェースesperecyan\url\URLクラスとして、URLSearchPramsインターフェースesperecyan\url\URLSearchParamsクラスとして使えるようにしました。 各インターフェースの解説としては、MDNのドキュメントがわかりやすいかもしれません https://developer.mozilla.org/docs/Web/API/URL https://developer.mozilla.org/docs/Web/API/URLSearchParams

当ライブラリは、URL Standard で定義されているアルゴリズムも実装しています。詳細はアルゴリズムなどの対応表をご覧ください。

<?php
require_once 'vendor/autoload.php';

use esperecyan\url\URL;

$url = new URL('http://url.test/foobar?name=value');
var_dump($url->protocol, $url->pathname, $url->searchParams->get('name'));

上の例の出力は以下となります。

string(5) "http:"
string(7) "/foobar"
string(5) "value"

要件

  • PHP 5.4、または7.2以降 (PHP 5.4 および 7.2 は非推奨)
    • SPL Types PECL ライブラリには非対応

インストール

composer require esperecyan/url

Composer のインストール方法については、Composerドキュメントをご覧ください。

貢献

  1. Fork します ( https://github.com/esperecyan/url )
  2. branch を作成します git checkout -b my-new-feature
  3. 変更を commit します git commit -am 'Add some feature'
  4. branch に push します git push origin my-new-feature
  5. Pull Request を作成します

もしくは

Issue を作成します

README や Doc コメントの英文の間違い、またテストの不備などを見つけたら、Pull Request や Issue などからご連絡ください。 README の翻訳も歓迎いたします。

謝辞

URLencodingクラスの実装に当たり、コードポイントから UTF-8 の文字を生成する - Qiita、およびUTF-8 の文字からコードポイントを求める - Qiitaのコードを利用させていただきました。

ライブラリの作成に当たり、URL Standard (日本語訳)を参考にさせていただきました。

READMEの英訳をハダーさんに協力していただきました。

セマンティック バージョニング

当ライブラリはセマンティック バージョニングを採用しています。 パブリックAPIは、当ライブラリのドキュメントに記載されているクラス・メソッド・定数・プロパティです。

ライセンス

当ライブラリのライセンスは Mozilla Public License Version 2.0 (MPL-2.0) です。

アルゴリズムなどの対応表

1. 基盤
パーセント符号化 esperecyan\url\lib\Infrastructure::percentEncode()
パーセント復号 esperecyan\url\lib\Infrastructure::percentDecode()
C0 制御文字 %‐符号化集合 esperecyan\url\lib\Infrastructure::C0_CONTROL_PERCENT_ENCODE_SET
パス %‐符号化集合 esperecyan\url\lib\Infrastructure::PATH_PERCENT_ENCODE_SET
ユーザ情報 %‐符号化集合 esperecyan\url\lib\Infrastructure::USERINFO_PERCENT_ENCODE_SET
utf-8 パーセント符号化 esperecyan\url\lib\Infrastructure::utf8PercentEncode()
3. ホスト(ドメインと IP アドレス)
ドメイン
不透明なホスト
空ホスト
妥当な utf-8 の文字列
IPv4 アドレス 0〜0xFFFFFFFFの整数、または浮動小数点数
IPv6 アドレス 0〜0xFFFFの整数を要素に持つ長さが8の配列
禁止ホスト符号位置 esperecyan\url\lib\HostProcessing::FORBIDDEN_HOST_CODE_POINTS
ドメインから ASCII へ変換 esperecyan\url\lib\HostProcessing::domainToASCII()
ドメインから Unicode へ変換 esperecyan\url\lib\HostProcessing::domainToUnicode()
妥当なドメイン esperecyan\url\lib\HostProcessing::isValidDomain()
ホスト構文解析器 esperecyan\url\lib\HostProcessing::parseHost()
IPv4 番号構文解析器 esperecyan\url\lib\HostProcessing::parseIPv4Number()
IPv4 構文解析器 esperecyan\url\lib\HostProcessing::parseIPv4()
IPv6 構文解析器 esperecyan\url\lib\HostProcessing::parseIPv6()
不透明なホスト構文解析器 esperecyan\url\lib\HostProcessing::parseOpaqueHost()
ホスト直列化器 esperecyan\url\lib\HostProcessing::serializeHost()
IPv4 直列化器 esperecyan\url\lib\HostProcessing::serializeIPv4()
IPv6 直列化器 esperecyan\url\lib\HostProcessing::serializeIPv6()
4. URL
URL esperecyan\url\lib\URLクラスのインスタンス
スキーム esperecyan\url\lib\URL->scheme
ユーザ名 esperecyan\url\lib\URL->username
パスワード esperecyan\url\lib\URL->password
ホスト esperecyan\url\lib\URL->host
ポート esperecyan\url\lib\URL->port
パス esperecyan\url\lib\URL->path
クエリ esperecyan\url\lib\URL->query
素片 esperecyan\url\lib\URL->fragment
基底 URL 不可用 flag esperecyan\url\lib\URL->cannotBeABaseURLFlag
オブジェクト esperecyan\url\lib\URL->object
特別スキーム esperecyan\url\lib\URL::$specialSchemes
特別 esperecyan\url\lib\URL->isSpecial()
資格証明情報を含む esperecyan\url\lib\URL->isIncludingCredentials()
ユーザ名 / パスワード / ポートを持てない esperecyan\url\lib\URL->cannotHaveUsernamePasswordPort()
Windows ドライブレター esperecyan\url\lib\URL::WINDOWS_DRIVE_LETTER
正規化済み Windows ドライブレター esperecyan\url\lib\URL::NORMALIZED_WINDOWS_DRIVE_LETTER
Windows ドライブレターから開始されている esperecyan\url\lib\URL::stringStartsWithWindowsDriveLetter()
パスを短縮する esperecyan\url\lib\URL->shortenPath()
単ドットパス区分 esperecyan\url\lib\URL::SINGLE_DOT_PATH_SEGMENT
二重ドットパス区分 esperecyan\url\lib\URL::DOUBLE_DOT_PATH_SEGMENT
URL 符号位置 esperecyan\url\lib\URL::URL_CODE_POINTS
URL 構文解析器 esperecyan\url\lib\URL::parseURL()
基本 URL 構文解析器 esperecyan\url\lib\URL::parseBasicURL()
ユーザ名を設定する esperecyan\url\lib\URL->setUsername()
パスワードを設定する esperecyan\url\lib\URL->setPassword()
URL 直列化器 esperecyan\url\lib\URL->serializeURL()
生成元 esperecyan\url\lib\URL->getOrigin()
5. application/x-www-form-urlencoded
application/x-www-form-urlencoded 構文解析器 esperecyan\url\lib\URLencoding::parseURLencoded()
application/x-www-form-urlencoded バイト直列化器 esperecyan\url\lib\URLencoding::serializeURLencodedByte()
application/x-www-form-urlencoded 直列化器 esperecyan\url\lib\URLencoding::serializeURLencoded()
application/x-www-form-urlencoded 文字列構文解析器 esperecyan\url\lib\URLencoding::parseURLencodedString()
( 名, 値 ) の組, または ( 名, 値, 型 ) の組 1つ目の要素に名、2つ目の要素に値、任意で3つ目の要素に型を持つ配列。値は文字列、または name キーからファイル名を取得できる配列